我刚刚使用以下简单代码创建了一个新的 vc++ exe:
#include<stdio.h>
#include<string.h>
#include<windows.h>
int ExceptionHandler(void);
int main(int argc,char *argv[]){
char temp[512];
printf("Application launched");
try
{
throw "error";
}
catch (... )
{
ExceptionHandler();
}
return 0;
}
int ExceptionHandler(void)
{
printf("Exception");
return 0;
}
该应用程序非常简单,并且创建了一个依赖kernel32.dll和MSVCR100D.dll的exe文件。
当我尝试将其导入并调试到 OllyDbg 中时(我只是想在堆栈窗口中查看 SEH 链),它显示“模块‘testseh’在代码外部具有入口点(如 PE 头中指定)。也许这个文件是自解压或自修改。请在设置断点时牢记这一点!”并且没有执行任何代码,它直接跳转到ntdll.dll崩溃部分(实际上exe正在崩溃但我无法一步步执行printf指令)
怎么会有这种行为呢?该exe既不依赖CLI也不依赖CLR,我错过了什么吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)