Page 1 of 1
Не ловятся исключения после применения VmProtect'а под MacOS
Posted: Thu Sep 12, 2019 12:33 pm
by sys_dev
После наложения защиты VmProtect портится механизм кидания/ловли исключений. Короткий тест приложен в архиве. Исключения создаются, но не долетают до catch-блоков, иногда создание исключений зацикливается до бесконечности. Из нашего приложения удалось поймать кусок стека, когда исключения не ловятся:
Code: Select all
frame #64261: 0x00007fff6cb1f19e libc++abi.dylib`std::__terminate(void (*)()) + 8
frame #64262: 0x00007fff6cb1ef86 libc++abi.dylib`__cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*) + 27
frame #64263: 0x00007fff6cb11f99 libc++abi.dylib`__cxa_throw + 113
В архиве файл
test - это скомпилированный тест и защищенный VmProtect'ом, а
test.orig - скомпилированный тест, но до защиты.
test.orig выполняется нормально, а
test падает по
Segmentation fault: 11.
Если в файле
test.cpp раскомментировать первые строчки с исключениями, то в защищенном примере создание исключений зацикливается.
Версия VmProtect:
Code: Select all
VMProtect Professional v 3.4.0 (build 1131) Copyright 2003-2019 VMProtect Software
Версия системы:
Code: Select all
System Version: macOS 10.14.5 (18F132), Kernel Version: Darwin 18.6.0
Re: Не ловятся исключения после применения VmProtect'а под MacOS
Posted: Sat Sep 14, 2019 5:34 am
by Admin
Try to protect the fully function "main" instead of the marker.
Re: Не ловятся исключения после применения VmProtect'а под MacOS
Posted: Sat Sep 14, 2019 8:29 am
by lach
Судя по всему, столкнулся с той же проблемой
Маркеров нет, накладывается только на _main, конфиг:
Code: Select all
<?xml version="1.0" encoding="UTF-8" ?>
<Document Version="2">
<Protection Options="889800" VMCodeSectionName=".upx">
<Messages>
</Messages>
<Folders />
<Procedures>
<Procedure MapAddress="_main" Options="0" CompilationType="2" />
</Procedures>
<Objects />
</Protection>
<DLLBox>
<Folders />
</DLLBox>
<Script />
<LicenseManager />
</Document>
Бинарники перезалил на форум, они 2мя сообщениями ниже
При том что код использующий исключения находится не в _main.
Падает с ошибками Illegal instruction: 4 и Segmentation fault: 11
Re: Не ловятся исключения после применения VmProtect'а под MacOS
Posted: Sat Sep 14, 2019 8:57 am
by lach
Отключение упаковки (Options="889544") помогает
Re: Не ловятся исключения после применения VmProtect'а под MacOS
Posted: Tue Sep 24, 2019 11:29 am
by sys_dev
Admin wrote:Try to protect the fully function "main" instead of the marker.
Спасибо, этот совет работает, хоть это и короткий пример, но на билде 1152 ошибка в продукте не воспроизводится.
lach wrote:Отключение упаковки (Options="889544") помогает
Спасибо за совет, но мне отключение этой опции не помогло.
Re: Не ловятся исключения после применения VmProtect'а под MacOS
Posted: Tue Sep 24, 2019 6:53 pm
by lach
Проблема сохранилась на 1152 билде, всё так же c упаковкой выбивает "Illegal instruction: 4" и "Segmentation fault: 11" (Случайным образом)
До моего кода исполнение не доходит, без упаковки всё отлично
На всякий случай перезалью бинарники сюда:
Re: Не ловятся исключения после применения VmProtect'а под MacOS
Posted: Wed Sep 25, 2019 6:29 am
by Admin
Можно сделать простейший EXE-ник, а не DLL?
Re: Не ловятся исключения после применения VmProtect'а под MacOS
Posted: Wed Sep 25, 2019 6:55 am
by lach
Это исполняемый файл, он назван library потому что является набором тестов для библиотеки
Re: Не ловятся исключения после применения VmProtect'а под MacOS
Posted: Wed Oct 09, 2019 12:34 pm
by lach
Проблема актуальна
Могу наклепать ещё примеров, воспроизводится достаточно просто.
В реальном бинарнике сжатие сильно помогает, т.к имею несколько крупных массивов данных не в ресурсах. Пока перешёл на их сжатие вручную, но приятнее было бы использовать встроенную функцию)
Re: Не ловятся исключения после применения VmProtect'а под MacOS
Posted: Fri Oct 11, 2019 8:31 am
by Admin
Там проблема не с исключениями, а с данными thread. Какие функции добавлять в проект?
Re: Не ловятся исключения после применения VmProtect'а под MacOS
Posted: Fri Oct 11, 2019 6:16 pm
by lach
main
lach wrote:<Procedure MapAddress="_main" Options="0" CompilationType="2" />
Re: Не ловятся исключения после применения VmProtect'а под MacOS
Posted: Sat Oct 12, 2019 8:33 am
by Admin
Проверяйте 1158 билд.