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

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

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

Postby sys_dev » Thu Sep 12, 2019 12:33 pm

После наложения защиты 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 13 times

Admin
Site Admin
Posts: 1696
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Postby Admin » Sat Sep 14, 2019 5:34 am

Try to protect the fully function "main" instead of the marker.

lach
Posts: 16
Joined: Sat Mar 23, 2019 1:18 pm

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

Postby lach » Sat Sep 14, 2019 8:29 am

Судя по всему, столкнулся с той же проблемой
Маркеров нет, накладывается только на _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: 16
Joined: Sat Mar 23, 2019 1:18 pm

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

Postby lach » Sat Sep 14, 2019 8:57 am

Отключение упаковки (Options="889544") помогает

sys_dev
Posts: 20
Joined: Tue Sep 03, 2013 8:08 am

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

Postby sys_dev » Tue Sep 24, 2019 11:29 am

Admin wrote:Try to protect the fully function "main" instead of the marker.

Спасибо, этот совет работает, хоть это и короткий пример, но на билде 1152 ошибка в продукте не воспроизводится.

lach wrote:Отключение упаковки (Options="889544") помогает

Спасибо за совет, но мне отключение этой опции не помогло.

lach
Posts: 16
Joined: Sat Mar 23, 2019 1:18 pm

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

Postby lach » Tue Sep 24, 2019 6:53 pm

Проблема сохранилась на 1152 билде, всё так же c упаковкой выбивает "Illegal instruction: 4" и "Segmentation fault: 11" (Случайным образом)
До моего кода исполнение не доходит, без упаковки всё отлично
На всякий случай перезалью бинарники сюда:
test_library_macos.tgz
(2.66 MiB) Downloaded 11 times

Admin
Site Admin
Posts: 1696
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Postby Admin » Wed Sep 25, 2019 6:29 am

Можно сделать простейший EXE-ник, а не DLL?

lach
Posts: 16
Joined: Sat Mar 23, 2019 1:18 pm

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

Postby lach » Wed Sep 25, 2019 6:55 am

Это исполняемый файл, он назван library потому что является набором тестов для библиотеки

lach
Posts: 16
Joined: Sat Mar 23, 2019 1:18 pm

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

Postby lach » Wed Oct 09, 2019 12:34 pm

Проблема актуальна
Могу наклепать ещё примеров, воспроизводится достаточно просто.
В реальном бинарнике сжатие сильно помогает, т.к имею несколько крупных массивов данных не в ресурсах. Пока перешёл на их сжатие вручную, но приятнее было бы использовать встроенную функцию)

Admin
Site Admin
Posts: 1696
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Postby Admin » Fri Oct 11, 2019 8:31 am

Там проблема не с исключениями, а с данными thread. Какие функции добавлять в проект?

lach
Posts: 16
Joined: Sat Mar 23, 2019 1:18 pm

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

Postby lach » Fri Oct 11, 2019 6:16 pm

main
lach wrote:<Procedure MapAddress="_main" Options="0" CompilationType="2" />

Admin
Site Admin
Posts: 1696
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Postby Admin » Sat Oct 12, 2019 8:33 am

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