Page 1 of 1

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

Posted: Wed Jan 15, 2014 12:32 pm
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).

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

Posted: Fri Jan 17, 2014 2:36 am
by Admin
Присылайте тестовый проект (оригинал ЕХЕ) на info@vmpsoft.com

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

Posted: Tue Feb 25, 2014 11:48 am
by Cyber
Извиняюсь за задержку...Вот здесь тестовый проект и бинарники

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

Posted: Mon Mar 17, 2014 4:57 am
by Admin
Проблема возникает из-за того, что информация о try блоке находится выше чем начало маркера, поэтому VMProtect ничего не знает о try и не может корректно обработать все ветки try/catch, в результате чего защищенное приложение падает. Если защищать эту функцию не через маркер, а по имени, то проблем нет.

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

Posted: Tue Jun 17, 2014 3:24 pm
by Admin
Проблема будет решена в версии 3.0