我正在尝试了解 SEH 机制

逆向工程 视窗 x86 汇编 pe32
2021-06-28 15:05:52

我试图了解 SEH(结构化异常处理)的机制。我了解它是如何记录和保存在 FS: [0] 中的前三个指令。但是为什么要加中断1(一步一步):我看不懂报告是什么。

push handler
push FS:[0]
mov  FS:[0], esp
int  1
1个回答

int 1不是该SEH安装,这是由第三指令完成的一部分。但是,int被 Windows 拦截并转换为异常,然后将其分派到由前面的指令设置的处理程序。所以基本上在这里它充当一种“调用处理程序”宏。

在实践中,也可以使用任何特权指令(例如hltout),但“不错”的事情int 1是它会产生一个单步异常,调试 API 使用该异常在正常情况下向调试器报告单步事件调试。如果调试器没有正确跟踪自己的操作,它可能会将此异常视为源自调试活动(单步执行代码)的异常,将其作为正常的单步进行处理,并且不将异常传递给被调试对象。这意味着不会执行处理程序代码,并且代码可以检测到调试器或跟踪器