从Linux调试Windows内核

Jok*_*ief 13 windbg virtual-machine windows-kernel

我曾经使用VirtualKD,WinDBG和单个虚拟机来调试Windows内核.

最近我得到了一台Linux机器,现在我想知道 - 当主机无法运行VirtualKD/WinDBG*时,调试Windows内核的最简单方法是什么?

我假设该解决方案将需要两台虚拟机,但我宁愿在我的实际机器上托管两个实例,而不是让一个实例驻留在另一个虚拟实例中...

反正有没有做到这一点?

提前致谢!

*出于稳定性原因,葡萄酒是最后的选择......

Jok*_*ief 18

解决了!基本上,我最终使用两个(VirtualBox)VMUnix域套接字(在主机上)上模拟串行连接(零调制解调器电缆).有关详情,请阅读以下内容:

硬件设置*:

  • 调试:
    • 确保机器已关闭并编辑串行端口设置.
    • 启用端口1,并按如下方式分配值:端口号:COM1,端口模式:主机管道,创建管道:未选中(客户端),端口/文件路径:/ tmp/win_link.
  • 调试器:
    • 与上面相同(使用相同的路径),只有这次创建管道应该被检查(服务器).

调试器设置:

  • 运行WinDBG并按Ctrl + K以调用内核调试.
  • COM中,输入:Baudrate:115200,Port:COM1,Resets:0并验证管道和重新连接是否未选中(重要).
  • 您将看到以下输出: Opened \\\\.\com1 Waiting to reconnect...

调试对象设置:

  • 在/ port com1/baud 115200/id 1上运行bootcfg/debug.要验证,请运行bootcfg.**
  • 重启.
  • 在启动阶段的早期,另一台机器上的WinDBG应检测调试对象是否正在运行.

*假设使用了VirtualBox.VMWare/KVM用户可能会按照类似的步骤获得相同的结果.另外,有关更多信息,请参阅VirtualBox文档.

**假设客人是Windows XP.更高版本包括bcdedit,可以按照此处的描述使用.