вылет при бросании исключения в 32-битном приложении

Issues related to VMProtect
Post Reply
Cyber
Posts: 48
Joined: Mon Feb 08, 2010 3:29 pm

вылет при бросании исключения в 32-битном приложении

Post by Cyber »

MSVC10, свежесозданный консольный проект
VMProtect 2.13, опции защиты дефолтные

после обработки VMProtect'ом вот этот простейший код вылетает во время throw:

Code: Select all

int _tmain(int argc, _TCHAR* argv[])
{
	printf("hello\n");

	VMProtectBeginMutation("testsection");

	try {
		printf("in try\n");
		throw 1;
	}
	catch(int) {
		printf("in exception\n");
	}

	printf("after try\n");

	VMProtectEnd();

	printf("bye-bye\n");

	return 0;
}
Вылет происходит только при использовании crt во внешней библиотеке (опция Project Properties\Configuration Properties\C/C++\Code Generation\Runtime library=Multi-threaded DLL).
При статической линковке не вылетает (Runtime library=Multi-threaded).
Admin
Site Admin
Posts: 2566
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: вылет при бросании исключения в 32-битном приложении

Post by Admin »

Присылайте тестовый проект (оригинал ЕХЕ) на info@vmpsoft.com
Cyber
Posts: 48
Joined: Mon Feb 08, 2010 3:29 pm

Re: вылет при бросании исключения в 32-битном приложении

Post by Cyber »

Извиняюсь за задержку...Вот здесь тестовый проект и бинарники
Admin
Site Admin
Posts: 2566
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: вылет при бросании исключения в 32-битном приложении

Post by Admin »

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

Re: вылет при бросании исключения в 32-битном приложении

Post by Admin »

Проблема будет решена в версии 3.0
Post Reply