标题所指的调试为利用WinDbg(Preview)对驱动/内核进行调试,书中介绍了本地内核调试和双机内核调试两种情况,本文主要侧重介绍双机内核调试,本地内核调试只会简单带过。

5.1 本地内核调试(LKD)

本地内核调试和双机内核调试的主要区别在于本地内核调试只能查看内核当前的状态无法设置断点,所以在执行命令的时候所看到的信息不一定可靠。

我们可以使用Sysinternals的LiveKd(64)工具,使用livekd(64) -w命令让LiveKd运行WinDbg

image-20211019211514256

5.2 双机内核调试

本节介绍的是VMWare的双机调试,和书中介绍使用Hyper-V虚拟机不太一样。

首先介绍一个双机调试的神器 VirtualKD-Redux ,将target32(64)放到对应位数的虚拟机操作系统中,运行vminstall.exe(请勿在主机运行

image-20211019214133428

image-20211019214938603

重启后选择下面启动项,按F8选择禁用驱动程序强制签名

image-20211019215101037

并在实体机打开vmmon64.exe,如果是在微软商城安装的WinDbg Preview 默认就会配置好路径我们不用额外设置,如果没有可以手动设置WinDbg.exe所在路径一般在以下路径

  • x86: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\WinDbg.exe
  • x64: C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\WinDbg.exe

image-20211019215355493

当选择进入系统并且配置好WinDbg路径,在实体机上会自动弹出WinDbg调试窗口

image-20211019215513818

5.3 WinDbg调试指令

可以参考软件调试第30章,张银奎老师讲的非常好我不再献丑了。