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 に答える