从Linux调试Windows内核(Debugging Windows Kernel from Li

2019-08-01 02:24发布

我用来调试使用VirtualKD,WinDBG和单个虚拟机的Windows内核。

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

我认为解决方案将需要两个虚拟机,但我宁愿我的托管实际机器上的两个实例,而不是居住在另一个内部的虚拟实例的实例...

反正是有,使这项工作?

提前致谢!

*葡萄酒是出于稳定性的原因不得已...

Answer 1:

解决了! 基本上,我结束了使用 (VirtualBox的) 虚拟机仿真在Unix域套接字 串行连接 (交叉线)(在主机上)。 欲了解更多信息,请阅读下文:

硬件设置*:

  • 调试:
    • 确保机器关闭,编辑串行端口设置。
    • 启用端口1,并如下指定值:端口号:COM1,端口模式: 主机管材 ,管件制作: 未检查 (客户端),端口/文件路径:/ tmp目录/ win_link。
  • 调试器:
    • 同上(使用相同的路径),只是这一次创建管道应进行检查 (服务器)。

调试器设置:

  • 运行WinDBG中,然后按Ctrl + K来调用内核调试
  • COM,输入:波特率:115200,端口:COM1,复位:0,确认管道和重新连接未被选中 (重要)。
  • 你会看到以下的输出: Opened \\\\.\com1 Waiting to reconnect...

调试设置:

  • 上/端口COM1 /波特115200 / ID 1运行的bootcfg /调试 。 要验证,运行的bootcfg。**
  • 重启。
  • 在孕穗期相当早,WinDBG的其他机器上应该能够检测到调试运行。

*假定VirtualBox的被使用。 VMWare的/ KVM用户大概就能实现以下类似的步骤相同的结果。 此外,更多信息请参考VirtualBox的文档 。

**假设客人是Windows XP中。 后来的版本包括BCDEDIT,描述可以使用这里 。



Answer 2:

对于QEMU \ KVM遵守这些指示: http://www.linux-kvm.org/page/WindowsGuestDrivers/GuestDebugging



Answer 3:

非常有益的,但适用于Windows XP的机器。 您可以参考下面的链接,如果你需要一台Linux主机上配置基于2 Windows7的虚拟机: http://www.aldeid.com/wiki/Category:Digital-Forensics/Computer-Forensics/Debugger/Kernel



Answer 4:

另一种选择是时下启用本地内核调试。 这带有一些局限性 ,但它将使你而只使用一个虚拟机访问内核数据。

此方法仅适用于Windows 8.0和Windows Server 2012及更高版本。

跟着这些步骤:

  1. 打开命令提示符窗口管理器。
  2. 进入bcdedit /debug on
  3. 如果计算机没有配置为调试运输的目标,进入bcdedit /dbgsettings local
  4. 重新启动计算机。

一旦系统重新启动,您可以执行WinDBG作为Administrator ,按ctrl+k或转到File -> Attach to kernel -> Local ,然后按OK。

在这一点上,你就可以只执行内核命令和访问内核结构:

的Windows 10下,并用新的WinDBG版本(预览)进行测试。

参考: 设置在单台计算机手动的建立本地内核调试



文章来源: Debugging Windows Kernel from Linux