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

Issues related to VMProtect
sergey_k
Posts: 19
Joined: Wed Sep 06, 2017 6:01 am

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

Post 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 303 times
Admin
Site Admin
Posts: 2562
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post 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
sergey_k
Posts: 19
Joined: Wed Sep 06, 2017 6:01 am

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

Post by sergey_k »

Вылечилось добавлением опции GCC -fno-reorder-blocks
Интересно только, насколько корректно такое решение?
Admin
Site Admin
Posts: 2562
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post by Admin »

Еще бы знать что эта хрень делает :))
sergey_k
Posts: 19
Joined: Wed Sep 06, 2017 6:01 am

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

Post by sergey_k »

Продолжаем разговор )
Очередной пример, вызывающий падение только в 32-х битных никсах.
exception.zip
(1.45 MiB) Downloaded 342 times
Admin
Site Admin
Posts: 2562
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post by Admin »

А оригинальный бинарник то где?
sergey_k
Posts: 19
Joined: Wed Sep 06, 2017 6:01 am

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

Post by sergey_k »

Прошу прощения, прикладываю.
original_bin.zip
(3.62 KiB) Downloaded 318 times
Admin
Site Admin
Posts: 2562
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post by Admin »

Проверяйте (3.1.2.896):
http://vmpsoft.com/files/VMProtectDemo_x64.tar.gz
sergey_k
Posts: 19
Joined: Wed Sep 06, 2017 6:01 am

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

Post by sergey_k »

Продолжаем ))
Очередной тестовый пример, вызывающий падение.
Проверяли с последней версией защиты (3.1.2.896)
testExcept.zip
(2.84 MiB) Downloaded 331 times
sergey_k
Posts: 19
Joined: Wed Sep 06, 2017 6:01 am

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

Post by sergey_k »

Ну что, есть какие-нибудь подвижки в нашем вопросе?
Admin
Site Admin
Posts: 2562
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post by Admin »

Пока нет.
Admin
Site Admin
Posts: 2562
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post by Admin »

Проверяйте (3.1.2.924):
http://vmpsoft.com/files/VMProtectDemo_x64.tar.gz
sergey_k
Posts: 19
Joined: Wed Sep 06, 2017 6:01 am

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

Post by sergey_k »

Нашли очередную проблему в 32-х битных никсах. В аттаче пример ее воспроизводящий.
Защищена одна функция. Если убрать защиту с этой функции, то приложение не падает.
test.tar.gz
(1.47 MiB) Downloaded 381 times
Также хотел спросить, есть ряд слабых машин, где запуск защищенного и упакованного приложения занимает очень много времени. Это как то ускорить можно?
sergey_k
Posts: 19
Joined: Wed Sep 06, 2017 6:01 am

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

Post by sergey_k »

Поднимаем тему.
Прикладываю упрощенный вариант примера, где проблема воспроизводится
Предположительно проблема возникает из-за команды "jmp *%eax". По крайней мере, если после упрощения кода компилятор перестаёт её добавлять, то автозащита перестаёт падать.
test2.zip
(1.46 MiB) Downloaded 284 times
Admin
Site Admin
Posts: 2562
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

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