我曾经使用VirtualKD、WinDBG和单个虚拟机来调试 Windows 内核。
最近我有一台 Linux 机器,现在我想知道 - 当您的主机无法运行VirtualKD/WinDBG*时,调试 Windows 内核的最简单方法是什么?
我假设该解决方案将需要两个虚拟机,但我宁愿在我的实际机器上托管两个实例,而不是将一个实例驻留在另一个虚拟实例中......
无论如何,有没有使这项工作?
提前致谢!
*出于稳定性原因,葡萄酒是最后的选择......
我曾经使用VirtualKD、WinDBG和单个虚拟机来调试 Windows 内核。
最近我有一台 Linux 机器,现在我想知道 - 当您的主机无法运行VirtualKD/WinDBG*时,调试 Windows 内核的最简单方法是什么?
我假设该解决方案将需要两个虚拟机,但我宁愿在我的实际机器上托管两个实例,而不是将一个实例驻留在另一个虚拟实例中......
无论如何,有没有使这项工作?
提前致谢!
*出于稳定性原因,葡萄酒是最后的选择......
解决了!基本上,我最终使用了两个(VirtualBox)VM ,通过Unix 域套接字(在主机上)模拟串行连接(空调制解调器电缆)。有关更多信息,请阅读以下内容:
硬件设置*:
调试器设置:
Opened \\\\.\com1 Waiting to reconnect...
调试器设置:
*假设使用了 VirtualBox。VMWare/KVM 用户可能会通过类似的步骤获得相同的结果。此外,有关更多信息,请参阅VirtualBox 文档。
**假设客人是 Windows XP。更高版本包括 bcdedit,可以按照此处所述使用。
对于 QEMU\KVM,请遵循以下说明: http ://www.linux-kvm.org/page/WindowsGuestDrivers/GuestDebugging
非常有用,但适用于 Windows XP 机器。如果需要在 Linux 主机上配置 2 个基于 Windows7 的虚拟机,可以参考以下链接:http ://www.aldeid.com/wiki/Category:Digital-Forensics/Computer-Forensics/Debugger/Kernel
现在的另一个选择是启用本地内核调试。这有一些限制,但是它使您能够在仅使用一个VM 时访问内核数据。
此方法仅适用于 Windows 8.0 和 Windows Server 2012 及更高版本。
跟着这些步骤:
bcdedit /debug on
bcdedit /dbgsettings local
系统重新启动后,您可以执行WinDBG
as Administrator
,按ctrl+k
或转到File -> Attach to kernel -> Local
并按 OK。
此时,您将能够执行仅内核命令并访问内核结构:
在 Windows 10 和新的 WinDBG 版本(预览版)下测试。
参考:手动设置单机本地内核调试