Проблема с 32-х битной Linux
Проблема с 32-х битной Linux
Возникла проблема такого плана:
1) Приложение падает с ошибкой Trace/breakpoint trap (core dumped)
2) Судя по выводимой отладочной информации, падение происходит до вызова единственной защищаемой функции.
3) Ошибка повторяется только под 32-битных linux.
4) Без защиты - всё хорошо. Если снять защиту с функции, то тоже всё хорошо.
В аттаче пример приложения + проект (логика в примере отсутствует, но хорошо характеризует проблему)
Использовалась версия протектора Linux 3.1.2 build 886
1) Приложение падает с ошибкой Trace/breakpoint trap (core dumped)
2) Судя по выводимой отладочной информации, падение происходит до вызова единственной защищаемой функции.
3) Ошибка повторяется только под 32-битных linux.
4) Без защиты - всё хорошо. Если снять защиту с функции, то тоже всё хорошо.
В аттаче пример приложения + проект (логика в примере отсутствует, но хорошо характеризует проблему)
Использовалась версия протектора Linux 3.1.2 build 886
Re: Проблема с 32-х битной Linux
VMProtect не умеет определять функции с атрибутом "noreturn":
Поэтому в тело test2 затесался и test1
Code: Select all
0804AC94 call 0806E040 → __stack_chk_fail_local
0804AC99 lea esi, [esi+00000000]
0804ACA0 push edi ← test1()
0804ACA1 push esi
0804ACA2 push ebx
Re: Проблема с 32-х битной Linux
Вылечилось добавлением опции GCC -fno-reorder-blocks
Интересно только, насколько корректно такое решение?
Интересно только, насколько корректно такое решение?
Re: Проблема с 32-х битной Linux
Еще бы знать что эта хрень делает )
Re: Проблема с 32-х битной Linux
Продолжаем разговор )
Очередной пример, вызывающий падение только в 32-х битных никсах.
Очередной пример, вызывающий падение только в 32-х битных никсах.
Re: Проблема с 32-х битной Linux
А оригинальный бинарник то где?
Re: Проблема с 32-х битной Linux
Прошу прощения, прикладываю.
Re: Проблема с 32-х битной Linux
Проверяйте (3.1.2.896):
http://vmpsoft.com/files/VMProtectDemo_x64.tar.gz
http://vmpsoft.com/files/VMProtectDemo_x64.tar.gz
Re: Проблема с 32-х битной Linux
Продолжаем ))
Очередной тестовый пример, вызывающий падение.
Проверяли с последней версией защиты (3.1.2.896)
Очередной тестовый пример, вызывающий падение.
Проверяли с последней версией защиты (3.1.2.896)
Re: Проблема с 32-х битной Linux
Ну что, есть какие-нибудь подвижки в нашем вопросе?
Re: Проблема с 32-х битной Linux
Пока нет.
Re: Проблема с 32-х битной Linux
Проверяйте (3.1.2.924):
http://vmpsoft.com/files/VMProtectDemo_x64.tar.gz
http://vmpsoft.com/files/VMProtectDemo_x64.tar.gz
Re: Проблема с 32-х битной Linux
Нашли очередную проблему в 32-х битных никсах. В аттаче пример ее воспроизводящий.
Защищена одна функция. Если убрать защиту с этой функции, то приложение не падает.
Также хотел спросить, есть ряд слабых машин, где запуск защищенного и упакованного приложения занимает очень много времени. Это как то ускорить можно?
Защищена одна функция. Если убрать защиту с этой функции, то приложение не падает.
Также хотел спросить, есть ряд слабых машин, где запуск защищенного и упакованного приложения занимает очень много времени. Это как то ускорить можно?
Re: Проблема с 32-х битной Linux
Поднимаем тему.
Прикладываю упрощенный вариант примера, где проблема воспроизводится
Предположительно проблема возникает из-за команды "jmp *%eax". По крайней мере, если после упрощения кода компилятор перестаёт её добавлять, то автозащита перестаёт падать.
Прикладываю упрощенный вариант примера, где проблема воспроизводится
Предположительно проблема возникает из-за команды "jmp *%eax". По крайней мере, если после упрощения кода компилятор перестаёт её добавлять, то автозащита перестаёт падать.
Re: Проблема с 32-х битной Linux
Это SWITCH, который не распознается ни вмпротектом, ни идой:Предположительно проблема возникает из-за команды "jmp *%eax".
Code: Select all
08048A22 mov ebp, ecx
08048A24 lea edi, [ecx*4+00000000]
...
08048A30 cmp ebp, 05
08048A33 jnbe 08048A50 ↓
08048A35 mov eax, [ebx+edi-00001484]
08048A3C add eax, ebx
08048A3E jmp eax