从Linux调试Windows内核
-
12-12-2019 - |
题
我曾经使用调试Windows内核 虚拟对话, N.风,风 和单个虚拟机。
最近我得到了一台Linux机器,现在我想知道-当你的主机无法运行时,调试Windows内核的最简单方法是什么 虚拟键盘/WinDBG*?
我假设解决方案将需要两个虚拟机,但我宁愿在我的实际机器上托管两个实例,而不是让一个实例驻留在另一个虚拟实例中。..
有没有办法做到这一点?
提前感谢!
*葡萄酒是出于稳定性原因的最后手段。..
解决方案
解决了!基本上,我最终使用了两个(VirtualBox) VMS 在 Unix域插座上模拟串行连接(null-modem电缆) (在主机上)。有关更多信息,请阅读以下内容:
硬件设置*:
- DEBUGDEE:
- 确保机器已关闭并编辑串口设置。
- 启用端口1 ,分配值如下:端口号: com1 ,端口模式:主管,Create Pipe:<强>未选中(客户),端口/文件路径: / tmp / win_link 。
- 与上面相同(使用相同的路径),只有此时间创建管道应该检查(服务器)。
调试器设置:
- 运行windbg并按ctrl + k来调用内核调试。
- 在 com 中,输入:baudrate:115200,端口:com1,重置:0并验证管道和重新连接未选中(重要)。
- 您将呈现以下输出:
Opened \\\\.\com1 Waiting to reconnect...
DEBUGGEE SETUP:
- 运行 bootcfg / debug on / port com1 / baud 115200 / ID 1 。要验证,请运行 bootcfg 。**
- 重新启动。
- 在引导阶段很早,另一台机器上的Windbg应该检测到Dewuggee正在运行。
*假设使用VirtualBox。 VMware / KVM用户可能会在类似的步骤达到相同的结果。此外,有关详细信息,请参阅 VirtualBox Docs
其他提示
对于qemu \ kvm遵循这些说明: http://www.linux-kvm.org/page/windowsguestdrivers/guestdebugging
非常有用,但适用于Windows XP机器。如果需要在Linux主机上配置基于Windows7的虚拟机: http://www.aldeid.com/wiki/category:digital-forensics/computer-forensics/debugger/kernel
现在的另一种选择是启用本地内核调试。这带有一些 限制, ,但是它将使您能够访问内核数据,而只是使用 一个 VM。
此方法仅适用于Windows8.0和Windows Server2012及更高版本。
按照以下步骤操作:
- 以管理员身份打开命令提示符窗口。
- 进入
bcdedit /debug on
- 如果计算机尚未配置为调试传输的目标,请输入
bcdedit /dbgsettings local
- 重新启动计算机。
一旦系统重新启动,您可以执行 WinDBG
作为 Administrator
,按 ctrl+k
或前往 File -> Attach to kernel -> Local
然后按确定。
此时,您将能够执行仅内核命令并访问内核结构:
在Windows10和新的WinDBG版本(预览)下测试.
参考资料: 手动设置单台计算机的本地内核调试