使用 VirtualBox 和 WinDBG 的内核 dbg 速度较慢

逆向工程 调试 风袋 虚拟机 核心
2021-06-29 08:48:56

我正在尝试使用 VirtualBox 和 WinDBG 进行 Windows 内核调试。但是每次我遇到断点时,虚拟机 CPU 使用率都会飙升,并且 CPU 寄存器不会显示在 WinDBG 中。难道我做错了什么?

我做了什么:

  1. boot.ini我设置/debugport=COM1 /baudrate=115200;
  2. 在 VirtualBox 中,我转发COM1到一个命名管道\\.\pipe\debug
  3. 在 WinDBG 文件 > Kernel Debug...>COM选项卡中:勾选“管道”复选框,对于Port = \\\\.\pipe\debug;

在 WinDBG 中找到调试会话,我可以打断点,我可以单步执行代码,我可以在“反汇编窗口”中看到反汇编的代码,我可以在“内存窗口”中查看内存位置。但是在 WinDBG 的“注册窗口”中什么也没有显示。

主机操作系统是 Windows 10,对于虚拟来宾操作系统,我尝试过 Windows XP 和 Windows 7 都有相同的问题。

我真的不知道在哪里寻找这个问题的答案,有人能指出我正确的方向吗?

对于遇到此问题或尝试学习内核调试的任何其他人,我使用了以下教程中的部分内容来了解​​目前的情况:

  1. Windows 内核调试技巧(Virtualbox 文档);
  2. 如何为内核调试配置 WinDbg(博客文章)。
2个回答

您应该尝试VirtualKD,它使用快速的 VM 特定机制与调试器通信,而不是慢速串行端口仿真。另一种选择可能是以太网或基于 USB 的调试,但我不确定如何使用 VM 进行设置...

修复了由两部分组成的问题。

  1. Avast 防病毒正在减慢 VM 到爬行解决方案卸载 avast 或在某些情况下禁用该选项:设置 > 故障排除 >“启用硬件辅助可视化”
  2. 较新版本的 WinDBG 在调试较旧版本的 Windows 解决方案时存在错误,使用较旧版本的 WinDBG,或使用 WinDBG 命令“r”查看 cpu 寄存器而不是使用“寄存器窗口”,或使用 WinDBG 插件解决这个问题 https://stackoverflow.com/questions/35961246/windbg-not-showing-register-values