我目前正在分析连接到远程 GDB 调试器的 Windows 10 QEMU 虚拟机中的一个软件。我设置了断点来审核应用程序在做什么。
我在应用程序的 OEP 的 GDB 和它的功能的一些 RIP 地址(甚至是正确的术语?)中设置了断点。然而,这是我绊倒的地方。
当这些函数触发时,GDB 会暂停 QEMU,我可以看到断点被击中。QEMU 的虚拟机已暂停,我可以通过 QEMU Monitor 执行诸如保存内存转储之类的操作。但是我想看看,例如,函数调用的下一个地址是什么。所以我习惯于单si
步执行下一条指令。这实际上是俄罗斯轮盘赌 - 它有时会进入下一条指令,或导致 Win10 VM 冻结,然后使用KERNEL_EXCEPTION_NOT_HANDLED
或SERVICE_EXCEPTION_NOT_HANDLED
等导致蓝屏死机。
我在某处读到我需要告诉 Windows 通过启用“调试模式”来放松其内部堆栈保护,这样当我使用步进指令时它不会蓝屏。这是正确的还是我使用了导致 Windows 蓝屏的错误 GDB 命令?
干杯。