本篇讲如何简单配置windows内核调试. 使用虚拟机调试windows 的方法分为两种, 一种是pipe, 一种是网络.

pipe方法

添加串口到虚拟机

安装好虚拟机后, 添加串口设配, 配置如下

配置虚拟机windows系统(简称Guest)

按组合键win+r, 输入 msconfig.做如下配置

重启虚拟机

配置外部主机(检查Host)

找到windbg的快捷方式, 右键属性, 添加参数-b -k com:port=\\.\pipe\com_1,baud=115200,pipe”

连接调试器

在Guest启动后, 在Host打开刚才设置的windbg快捷方式, 如下便连接成功

添加符号

网络方法

假设虚拟机是windows 10, ip 为 192.168.170.12, 主机ip为 192.168.170.1, 在虚拟机中使用管理员打开powershell, 执行以下命令:

1
2
3
4
5
6
7
PS C:\Windows\system32> Bcdedit /set dbgtransport kdnet.dll
操作成功完成。
PS C:\Windows\system32> Bcdedit /debug yes
操作成功完成。
PS C:\Windows\system32> Bcdedit /dbgsettings net hostip:192.168.170.1 port:50110
Key=3tiyrjeh9h9w5.19vgro94onrdc.1wckyll43kv3r.yf1gyp2ymc3n
PS C:\Windows\system32>

此处使用的port是 50110, 设置后会出现一个key.
设置好后重启一下虚拟机, 重启后, 在主机使用以下命令连接虚拟机:

1
WinDBG -k net:port=50110,key=3tiyrjeh9h9w5.19vgro94onrdc.1wckyll43kv3r.yf1gyp2ymc3n

hyper-v的hypervisor调试配置

1
2
bcdedit /set hypervisordebug on
bcdedit /hypervisorsettings NET HOSTIP:192.168.170.1 PORT:50000

windbg远程调试用户程序

Guest里, 安装同版本windbg, 在 C:\Program Files\Windows Kits\10\Debuggers\x64\目录, 执行

.\dbgsrv -t tcp:port=50000, 监听50000端口

在主机执行 windbg -premote tcp:Port=50000,Server=192.168.150.152, 连接目标虚拟机. 弹出windbg窗口后, 直接F6选择需要附加的程序.

参考