INT 0x2D byte scission 的原因是什么?

逆向工程 反调试
2021-06-28 00:01:35

执行 INT 0x2D 时字节断裂(跳过“int 2d”之后的下一个直接字节)行为背后的原因是什么?我看到这篇文章http://www.drdobbs.com/monitoring-nt-debug-services/184416239但仍然无法理解 Windows 跳过字节的原因是什么。欢迎任何解释。谢谢。

1个回答

这里描述了行为的完整细节:http : //pferrie.host22.com/papers/antidebug.pdf

具体来说,如果 EAX 寄存器在所有版本的 Windows 上的值为 1、3 或 4,或者在 Windows Vista 和更高版本上的值为 5,则 Windows 会将异常地址增加 1。最后,如果存在调试器,它会发出 EXCEPTION_BREAKPOINT (0x80000003) 异常。

跳过的字节旨在将信息传递给内核模式组件,但默认情况下不使用该机制。