2

我刚刚用这个简单的代码创建了一个新的 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,我错过了什么吗?

4

1 回答 1

2

从 olly 获取的编译器异常为关键(错误设置)

于 2011-05-07T21:43:32.440 回答