我对以下技术感兴趣,以检测是否附加了调试器。
http://spareclockcycles.org/2012/02/14/stack-necromancy-defeating-debuggers-by-rising-the-dead/
但是,我尝试了这些示例,但它们似乎不起作用。
Windows Debug API 是否在附加或存在时修改被调试者堆栈?
谢谢 !
我对以下技术感兴趣,以检测是否附加了调试器。
http://spareclockcycles.org/2012/02/14/stack-necromancy-defeating-debuggers-by-rising-the-dead/
但是,我尝试了这些示例,但它们似乎不起作用。
Windows Debug API 是否在附加或存在时修改被调试者堆栈?
谢谢 !
文章中的结果依赖于特定于 Windows 版本和当时存在的调试器的详细信息。它们没有被广泛记录,因为它们非常不可靠。
Windows 将向附加进程注入一个线程以收集有关该进程的信息,这导致了“DebugBreak overwrite”技术来击败它。
启动调试进程时会执行额外的检查,这可能会导致堆栈状态发生变化,但整个过程只是在追寻鬼魂。可以随时更改 Windows 的行为以重新引入该行为或以其他方式对其进行更改。