2

コードはどのように例外をキャッチしますか (try、catch(...))?

push 0FFFFFFFFh
...
mov eax, dword ptr fs:[00000000h]
...
mov dword ptr fs:[00000000h],eax  
mov dword ptr [ebp-10h],esp

このコードは、例外をキャッチする関数の「ヘッド」で何を意味しますか?

mov dword ptr [ebp-4], 0

そしてこれ(「試してみる」の頭の中)?関数にはローカル変数がありません。

関数:

int SUM(int a, int b)
{
    try{}
    catch(...){}
    return 0;
}

FSセグメントの店舗は?

4

2 に答える 2

7

に格納される値は、構造体fs:[0]のリンク リストへのポインタです。EXCEPTION_REGISTRATION詳細については、ここを参照してください。

Win32 構造化例外処理の深みに関する短期集中コース、MSJ、1997 年 1 月

于 2012-12-07T08:58:42.117 に答える
1

MSVC が例外を実装する方法 (x86): https://www.openrce.org/articles/full_view/21

これは、SEH ( __try/__catch/__finally) と C++ ( )の両方のtry/catch例外実装をカバーしています。

MSVC (x64) および GCC (Linux/iOS) が例外処理を実装する方法: http://www.hexblog.com/?p=704

于 2012-12-07T17:04:56.847 に答える