检测 OllyDbg - INT3?

逆向工程 拆卸 反调试
2021-06-10 19:45:50

我正在尝试捕获反调试例程,但我不太明白 INT3 的作用,并且我读到它可以用于检测调试器和掩码调用。如果我正在步进,该程序最终会将我发送到一个无意义的循环中,如果我正在运行,它会通知我已找到调试器。

77BE0000   8B4424 04        MOV EAX,DWORD PTR SS:[ESP+4]
77BE0004   CC               INT3
77BE0005   C2 0400          RETN 4
77BE0008 > CC               INT3
77BE0009   90               NOP
77BE000A   C3               RETN
77BE000B   90               NOP
77BE000C > CC               INT3
77BE000D   C3               RETN

我认为 INT3 可能会发生在这里。由于我的英特尔指令集参考 ( http://faydoc.tripod.com/cpu/index_i.htm ) 说这与调试器中断有关。我还阅读了一些关于如何使用这些来屏蔽逆向工程师的调试器检测的内容。

我是在吠错树还是这行代码中有问题?

1个回答

该技术使用的事实是,当中断指令 INT3(断点)和 INT1(单步)在调试器中逐步执行时,默认情况下不会调用异常处理程序,因为调试器通常会处理由这些中断生成的异常。因此,打包程序可以在异常处理程序中设置标志,如果在 INT 指令之后没有设置这些标志,则表示正在调试进程。此外,kernel32!DebugBreak() 会在内部调用 INT3,而一些加壳程序则使用上述 API。

参考