Windows 调试工具(WinDbg、KD、CDB、NTSD) - Windows drivers | Microsoft Docs

驱动调试为了避免调试过程中的各种蓝屏操作,一般会采用双机调试,在一个设备的情况下可以搭配VM进行调试。

Windbg + VMware

Host OS: Win10 21H2 LTSC

Guest OS: Win10 21H2 LTSC

因为部分设备不支持网络连接调试,这里介绍一下使用串口进行连接。

VM串口设置

在虚拟机中添加串行端口,并进行如下设置。命名管道可自定义,但是需要与之后Windbg参数相同。

Guest OS设置

BCDEdit /dbgsettings - Windows drivers |微软文档 (microsoft.com)

  1. 管理员启动命令行窗口,进行调试器全局设置

    1
    bcdedit /dbgsettings serial baudrate:115200 debugport:1

    此处debugport应为命名管道对应的端口号,这里可通过vm设置中的命名来进行确认,通常虚拟机如果存在打印机的话COM1端口会被占用,所以一般会把打印机删除或者命名管道使用其他端口

  2. 关闭数字签名校验

    1
    2
    bcdedit /set nointegritychecks on
    bcdedit /set loadoptions DDISABLE_INTEGRITY_CHECKS
  3. 复制当前引导项,记录输出的ID

    1
    bcdedit /copy {current} /d DriverDebugEntry
  4. 激活debug

    1
    2
    3
    bcdedit /debug {ID} ON
    bcdedit /bootdebug {ID} ON
    bcdedit /set {ID} testsigning on
  5. 引导选择超时设置

    1
    bcdedit /timeout 10

启动Windbg

在Host打开命令行,进入Windbg.exe目录下(注意区分x86/x64),输入

1
./windbg.exe -b -k com:pipe,port=\\.\pipe\debugger,resets=0,reconnect -y

注:port对应虚拟机所设置的命名管道

这时windbg会等待连接,重启虚拟机,在引导选择时选择刚才创建的引导项,可以在Windbg中看到连接成功,并自动中断,输入g进入系统,即可进行驱动调试。

VirtualKD + VMware

4d61726b/VirtualKD-Redux: VirtualKD-Redux - A revival and modernization of VirtualKD (github.com)

手动进行引导设置操作比较复杂,所以可以使用开源工具VirtualKD进行快速设置,其支持VMware以及Vbox

  1. 在VirtualKD目录下target32或target64(对应虚拟机架构)拷贝到虚拟机中执行install进行安装

  2. 在主机中打开vmmon.exe,设置调试器路径

  3. 重启虚拟机在引导选择时按F8禁用签名校验,如果引导选择界面为windows新版的选择界面(不是传统上下键选择),则在高级设置里进行签名校验禁用

  4. VirtualKD会自动打开调试器,按g即可进入系统