我正在使用 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 的异常处理程序,因为它是当前线程异常处理程序。
谢谢。