我可以DWORD
使用以下命令在 WinDbg 中设置内存读/写访问断点:
ba r 4 0x0307F42C
但是有没有办法设置超过 4 个?
我可以DWORD
使用以下命令在 WinDbg 中设置内存读/写访问断点:
ba r 4 0x0307F42C
但是有没有办法设置超过 4 个?
这些被称为硬件断点,与CPU 中的调试寄存器有关。通常有 6 个,但只有 DR0-DR3 用于指定硬件断点的地址。
虽然windbg不支持内存断点,但内存断点是另一种基于内存访问而不是代码执行来放置断点的常用方法。
尽管大多数调试器在内部实现了这一点,但内存断点的工作方式是PAGE_GUARD
为内存断点地址范围内的所有页面设置位,然后过滤页面内特定范围捕获的任何异常,然后重置页面保护。
您可以通过使用windbg 自己放置一个页面保护来做类似的事情,但这需要付出很多努力。
需要注意的是,内存断点可以毫不费力地检测到,并且可能会显着降低执行速度(甚至比调试更慢),在调试具有反调试保护的软件时,请务必注意。