【发布时间】:2013-03-26 17:58:19
【问题描述】:
假设一个调试器(常见的 x86 ring3 调试器如 olly、IDA、gdb...)设置了一个 软件断点到虚拟地址 0x1234。
这是通过将 0x1234 处的任何操作码替换为“0xCC”来完成的 现在让我们假设被调试进程运行这条 0xCC 指令并引发 软件异常和调试器捕捉到这一点。
调试器检查内存内容、寄存器并做一些事情......和 现在它想恢复被调试进程。
据我所知。从现在开始,这是我的假设。
调试器恢复原始操作码(已替换为 0xCC) 被调试者以恢复执行。
调试器操纵被调试者的 CONTEXT 的 EIP 指向 恢复指令。
调试器处理异常,现在,被调试者从断点恢复。
但调试器希望保留断点。 调试器如何管理这个?
【问题讨论】:
-
好问题。我猜片上调试器支持硬件必须对此有所帮助。
标签: debugging breakpoints