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
test32.zip
(1.71 MiB) Downloaded 467 times

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-х битных никсах.
exception.zip
(1.45 MiB) Downloaded 521 times

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
Прошу прощения, прикладываю.
original_bin.zip
(3.62 KiB) Downloaded 495 times

Re: Проблема с 32-х битной Linux

Posted: Mon Nov 06, 2017 9:46 am
by Admin
Проверяйте (3.1.2.896):
http://vmpsoft.com/files/VMProtectDemo_x64.tar.gz

Re: Проблема с 32-х битной Linux

Posted: Thu Nov 16, 2017 11:33 am
by sergey_k
Продолжаем ))
Очередной тестовый пример, вызывающий падение.
Проверяли с последней версией защиты (3.1.2.896)
testExcept.zip
(2.84 MiB) Downloaded 511 times

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
Проверяйте (3.1.2.924):
http://vmpsoft.com/files/VMProtectDemo_x64.tar.gz

Re: Проблема с 32-х битной Linux

Posted: Thu Mar 29, 2018 5:21 pm
by sergey_k
Нашли очередную проблему в 32-х битных никсах. В аттаче пример ее воспроизводящий.
Защищена одна функция. Если убрать защиту с этой функции, то приложение не падает.
test.tar.gz
(1.47 MiB) Downloaded 559 times
Также хотел спросить, есть ряд слабых машин, где запуск защищенного и упакованного приложения занимает очень много времени. Это как то ускорить можно?

Re: Проблема с 32-х битной Linux

Posted: Wed Jun 20, 2018 6:16 am
by sergey_k
Поднимаем тему.
Прикладываю упрощенный вариант примера, где проблема воспроизводится
Предположительно проблема возникает из-за команды "jmp *%eax". По крайней мере, если после упрощения кода компилятор перестаёт её добавлять, то автозащита перестаёт падать.
test2.zip
(1.46 MiB) Downloaded 456 times

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 элементов. Падает конечно из-за этого.