Page 1 of 2
Проблема с 32-х битной Linux
Posted: Fri Oct 20, 2017 7:20 am
by sergey_k
Возникла проблема такого плана:
1) Приложение падает с ошибкой Trace/breakpoint trap (core dumped)
2) Судя по выводимой отладочной информации, падение происходит до вызова единственной защищаемой функции.
3) Ошибка повторяется только под 32-битных linux.
4) Без защиты - всё хорошо. Если снять защиту с функции, то тоже всё хорошо.
В аттаче пример приложения + проект (логика в примере отсутствует, но хорошо характеризует проблему)
Использовалась версия протектора Linux 3.1.2 build 886
Re: Проблема с 32-х битной Linux
Posted: Sat Oct 21, 2017 6:38 am
by Admin
VMProtect не умеет определять функции с атрибутом "noreturn":
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
Поэтому в тело test2 затесался и test1
Re: Проблема с 32-х битной Linux
Posted: Tue Oct 24, 2017 7:30 am
by sergey_k
Вылечилось добавлением опции GCC -fno-reorder-blocks
Интересно только, насколько корректно такое решение?
Re: Проблема с 32-х битной Linux
Posted: Wed Oct 25, 2017 8:33 am
by Admin
Еще бы знать что эта хрень делает

)
Re: Проблема с 32-х битной Linux
Posted: Fri Nov 03, 2017 4:32 am
by sergey_k
Продолжаем разговор )
Очередной пример, вызывающий падение только в 32-х битных никсах.
Re: Проблема с 32-х битной Linux
Posted: Fri Nov 03, 2017 5:41 am
by Admin
А оригинальный бинарник то где?
Re: Проблема с 32-х битной Linux
Posted: Fri Nov 03, 2017 11:16 am
by sergey_k
Прошу прощения, прикладываю.
Re: Проблема с 32-х битной Linux
Posted: Mon Nov 06, 2017 9:46 am
by Admin
Re: Проблема с 32-х битной Linux
Posted: Thu Nov 16, 2017 11:33 am
by sergey_k
Продолжаем ))
Очередной тестовый пример, вызывающий падение.
Проверяли с последней версией защиты (3.1.2.896)
Re: Проблема с 32-х битной Linux
Posted: Tue Dec 05, 2017 4:19 am
by sergey_k
Ну что, есть какие-нибудь подвижки в нашем вопросе?
Re: Проблема с 32-х битной Linux
Posted: Tue Dec 05, 2017 6:52 pm
by Admin
Пока нет.
Re: Проблема с 32-х битной Linux
Posted: Mon Jan 29, 2018 11:34 am
by Admin
Re: Проблема с 32-х битной Linux
Posted: Thu Mar 29, 2018 5:21 pm
by sergey_k
Нашли очередную проблему в 32-х битных никсах. В аттаче пример ее воспроизводящий.
Защищена одна функция. Если убрать защиту с этой функции, то приложение не падает.
Также хотел спросить, есть ряд слабых машин, где запуск защищенного и упакованного приложения занимает очень много времени. Это как то ускорить можно?
Re: Проблема с 32-х битной Linux
Posted: Wed Jun 20, 2018 6:16 am
by sergey_k
Поднимаем тему.
Прикладываю упрощенный вариант примера, где проблема воспроизводится
Предположительно проблема возникает из-за команды "jmp *%eax". По крайней мере, если после упрощения кода компилятор перестаёт её добавлять, то автозащита перестаёт падать.
Re: Проблема с 32-х битной Linux
Posted: Sat Jun 23, 2018 5:11 am
by Admin
Предположительно проблема возникает из-за команды "jmp *%eax".
Это SWITCH, который не распознается ни вмпротектом, ни идой:
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
По адресу 08048B7C лежит таблица со смещениями на 6 элементов. Падает конечно из-за этого.