Olly Debugger でプログラムをデバッグしています。次のように実行中に例外ハンドラをインストールします。
push 004010a9
xor eax, eax
push dword ptr fs:[eax]
mov dword ptr fs:[eax], esp
したがって、アドレス 004010a9 にある例外ハンドラがインストールされます。
次の命令は、次に示すようにメモリ アクセス違反をトリガーします。
add eax, 40
sub dword ptr ds:[00410000], eax
コードにはコード セクションへの書き込み権限がないため、メモリ アクセス違反が発生して停止します。
ここで、Shift + F9 キーを押して例外をプログラムに渡すオプションがあります。
ただし、押しても何も起こらず、プログラムは一時停止状態のままです。
この時点での私の SEH チェーンは次のようになります。
004010a9 // exception handler installed above
7c839aa8 // final exception handler
Olly Debugger のデバッグ オプションは、次のように設定されています。
[例外] タブで、次のオプションのみをオンにしました。
Kernel32 のメモリ アクセス違反を無視する
Shift + F9 を押したときに、プログラムが 004010a9 にある例外ハンドラーに例外を渡さない理由を理解できません。これは現在のスレッドの例外ハンドラーであるためです。
ありがとう。