【问题标题】:Debugging Windows Kernel from Linux从 Linux 调试 Windows 内核
【发布时间】:2012-09-23 16:36:55
【问题描述】:

我曾经使用 VirtualKDWinDBG 和单个虚拟机来调试 Windows 内核。

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

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

有没有办法让它工作?

提前致谢!

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

【问题讨论】:

    标签: windbg virtual-machine windows-kernel


    【解决方案1】:

    解决了!基本上,我最终使用 两个 (VirtualBox) VMsUnix 域套接字上模拟 串行连接(空调制解调器电缆) (在主机上)。欲了解更多信息,请阅读以下内容:

    硬件设置*:

    • 调试对象:
      • 确保机器已关闭并编辑串行端口设置。
      • 启用Port 1,并赋值如下:端口号:COM1,端口模式:主机管道,创建管道:未选中(客户端),端口/文件路径:/tmp/win_link
    • 调试器:
      • 与上面相同(使用相同的路径),只是这次 Create Pipe 应该选中(服务器)。

    调试器设置:

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

    调试对象设置:

    • 在 /port com1 /baud 115200 /id 1 上运行 bootcfg /debug。要验证,请运行 bootcfg。**
    • 重启。
    • 在引导阶段的早期,另一台计算机上的 WinDBG 应该检测到被调试对象正在运行。

    *假设使用了 VirtualBox。 VMWare/KVM 用户可能会通过类似的步骤获得相同的结果。此外,有关更多信息,请参阅VirtualBox docs

    **假设客人是 Windows XP。以后的版本包括bcdedit,可以按照here的描述使用。

    【讨论】:

    • 您的配置看起来很完美,但无论我使用什么配置,我都看不到我的两个 Windows vm 上的串行端口。你有过这样的问题吗?
    【解决方案2】:

    对于 QEMU\KVM,请遵循以下说明: http://www.linux-kvm.org/page/WindowsGuestDrivers/GuestDebugging

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        现在的另一个选择是启用本地内核调试。这带有一些limitations,但它可以让您在仅使用一个 VM 时访问内核数据。

        此方法仅适用于 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 版本(预览版)下测试。

        参考:Setting Up Local Kernel Debugging of a Single Computer Manually

        【讨论】:

        • 这不是一个完整的调试设置。
        猜你喜欢
        • 1970-01-01
        • 2011-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-09
        • 2019-01-25
        • 2011-06-26
        • 1970-01-01
        相关资源
        最近更新 更多