最近在测试一个项目是无意中发现了个加壳后的问题,这里记录下。
问题描述:
程序经过加壳(VMP)后,运行过程中在加过异常处理保护(try)的函数内出现了异常后,程序在捕捉到异常后不会去执行except内的代码,然后直接出现崩溃(闪退)的情况。except的处理方式是EXCEPTION_EXECUTE_HANDLER
解决方案:
如果选择使用了SAFESEH加壳工具可能无法解析出正确的SEH结构,导致无法找到异常处理例程,因此导致了程序的崩溃。所以这里编译配置选择“否”即可。
PS.
SAFESEH的配置不同,编译后的SEH结构会有差异,具体详情可以搜索SAFESEH相关知识