Не ловятся исключения после применения VmProtect'а под MacOS

Issues related to VMProtect
Post Reply
sys_dev
Posts: 20
Joined: Tue Sep 03, 2013 8:08 am

Не ловятся исключения после применения VmProtect'а под MacOS

Post 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
Attachments
vmprotect-mac-exceptions.tar.gz
(2.23 MiB) Downloaded 358 times
Admin
Site Admin
Posts: 2584
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Не ловятся исключения после применения VmProtect'а под MacOS

Post by Admin »

Try to protect the fully function "main" instead of the marker.
lach
Posts: 18
Joined: Sat Mar 23, 2019 1:18 pm

Re: Не ловятся исключения после применения VmProtect'а под MacOS

Post 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
Last edited by lach on Tue Sep 24, 2019 6:55 pm, edited 2 times in total.
lach
Posts: 18
Joined: Sat Mar 23, 2019 1:18 pm

Re: Не ловятся исключения после применения VmProtect'а под MacOS

Post by lach »

Отключение упаковки (Options="889544") помогает
sys_dev
Posts: 20
Joined: Tue Sep 03, 2013 8:08 am

Re: Не ловятся исключения после применения VmProtect'а под MacOS

Post by sys_dev »

Admin wrote:Try to protect the fully function "main" instead of the marker.
Спасибо, этот совет работает, хоть это и короткий пример, но на билде 1152 ошибка в продукте не воспроизводится.
lach wrote:Отключение упаковки (Options="889544") помогает
Спасибо за совет, но мне отключение этой опции не помогло.
lach
Posts: 18
Joined: Sat Mar 23, 2019 1:18 pm

Re: Не ловятся исключения после применения VmProtect'а под MacOS

Post by lach »

Проблема сохранилась на 1152 билде, всё так же c упаковкой выбивает "Illegal instruction: 4" и "Segmentation fault: 11" (Случайным образом)
До моего кода исполнение не доходит, без упаковки всё отлично
На всякий случай перезалью бинарники сюда:
test_library_macos.tgz
(2.66 MiB) Downloaded 410 times
Admin
Site Admin
Posts: 2584
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Не ловятся исключения после применения VmProtect'а под MacOS

Post by Admin »

Можно сделать простейший EXE-ник, а не DLL?
lach
Posts: 18
Joined: Sat Mar 23, 2019 1:18 pm

Re: Не ловятся исключения после применения VmProtect'а под MacOS

Post by lach »

Это исполняемый файл, он назван library потому что является набором тестов для библиотеки
lach
Posts: 18
Joined: Sat Mar 23, 2019 1:18 pm

Re: Не ловятся исключения после применения VmProtect'а под MacOS

Post by lach »

Проблема актуальна
Могу наклепать ещё примеров, воспроизводится достаточно просто.
В реальном бинарнике сжатие сильно помогает, т.к имею несколько крупных массивов данных не в ресурсах. Пока перешёл на их сжатие вручную, но приятнее было бы использовать встроенную функцию)
Admin
Site Admin
Posts: 2584
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Не ловятся исключения после применения VmProtect'а под MacOS

Post by Admin »

Там проблема не с исключениями, а с данными thread. Какие функции добавлять в проект?
lach
Posts: 18
Joined: Sat Mar 23, 2019 1:18 pm

Re: Не ловятся исключения после применения VmProtect'а под MacOS

Post by lach »

main
lach wrote:<Procedure MapAddress="_main" Options="0" CompilationType="2" />
Admin
Site Admin
Posts: 2584
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Не ловятся исключения после применения VmProtect'а под MacOS

Post by Admin »

Проверяйте 1158 билд.
Post Reply