我正在阅读一些关于调试的旧文章,其中一篇提到了调试寄存器。阅读更多关于这些寄存器及其可以做的事情让我非常渴望与他们取得一些乐趣。然而,当我尝试寻找有关如何实际使用它们的更多信息时,我读到它们只能从Windows中的环0访问。
我认为那是结束,因为我不打算只用几个寄存器来编写内核驱动程序。但后来我想到了我曾经玩过的内存编辑工具。它被称为欺骗引擎,该程序的各种选项之一是指定打破正在执行/访问/读取的指令/数据。这与调试寄存器完全相同。所以我想知道:在Windows中是否有替代/替换调试寄存器?因为我确信程序(作弊引擎)不使用内核驱动程序来设置这些值。
答案 0 :(得分:2)
这根本不是真的,你可以间接设置来自ring3的硬件调试寄存器(ollydbg这样做),为此你需要在windows(example)下使用SetThreadContext
。
如果你仍然需要替换HW寄存器,可以使用INT3代码断点和单步陷阱来检查varibale是否已经改变(非常低效)。
一个很好的参考是GDB及其来源:http://developer.apple.com/library/mac/#documentation/DeveloperTools/gdb/gdbint/gdbint_3.html