Trap Flag - 反调试技巧

逆向工程 视窗 x86 反调试
2021-06-20 23:57:46

我正在尝试反转一个程序,该程序基于 SEH 和 TF 的使用采用某种反调试技巧。代码以:

在此处输入图片说明

所以显然它产生了一个异常

XOR DWORD PTR [ESP], 154h

最终以调用终止ExitProcess()而无需运行程序。

我尝试使用NOPs 来绕过它,但由于执行时 EP 已经指向这段有问题的代码,因此它不起作用。

我怎样才能绕过这个以及真正触发异常的原因是什么?

1个回答

它正在使用该异或指令设置陷阱标志

正常运行时(不在调试器下)

触发陷阱标志以便处理程序有机会执行

当二进制文件在调试器下运行时,陷阱标志被忽略并且处理程序没有机会执行

硬补丁直接指向处理程序或简单地更改调试器中的 eip 以进行分析

您的屏幕截图看起来像是在使用 ollydbg

如果是这样,只需在 0x401060 @ seh 处理程序处设置断点后按 shift + f9 即可将异常传递给程序并绕过该技巧