Имеется код, в котором бросается исключение в catch-блоке, окружающем защищенный код. После защиты (только виртуализация) программа падает.
Вот простейший код, на котором проблема воспроизводится:
Code: Select all
#include <stdio.h>
#include <exception>
#include "VMProtectSDK.h"
void test()
{
try
{
VMProtectBeginVirtualization( "" );
throw std::exception();
VMProtectEnd();
}
catch( const std::exception& )
{
printf( "OK - catch( std::exception ) exception correctly!\n" );
throw std::exception();
}
}
int main()
{
printf( "Test started\n" );
try
{
test();
}
catch( const std::exception& )
{
printf( "OK - catch( std::exception ) exception correctly!\n" );
}
printf( "Test finished\n" );
return 0;
}
Прикладываю тестовый sample (требуется vs2017) и собранные бинари (защищенный и исходный).
Версия компилятора:
Code: Select all
Microsoft (R) C/C++ Optimizing Compiler Version 19.12.25835 for x64
Code: Select all
VMProtect Professional v 3.2.0 (build 976) Copyright 2003-2018 VMProtect Software