windbg 双机调试环境搭建(虚拟机)
WinDbg 是一个调试器,可用于分析故障转储、调试实时用户模式和内核模式代码,以及检查 CPU 寄存器和内存。
WinDbg 下载安装
windbg 目前最常用的版本分为 Windbg 和 Windbg Preview 两种版本,前者是在安装 WDK 后自动安装的版本,后者需要自己从官方网站下载安装。
Windbg 属于传统应用界面(版本虽然又更新,但是界面显示效果依然老旧)
Windbg Preview 则采用新版本的 UI 风格显示。
这两个版本的功能一致、使用方式也一样。具体使用哪种根据大家自己的需求都可以,这两个版本基本上可以说是一样的。
下载安装
WinDbg 的是和 Windows WDK 集成到一起的。所以安装 Windows WDK 后会自动安装 WinDbg 旧版本样式的。安装 Windows WDK 可以参考这篇文章(Windows 驱动开发环境搭建)
至于 WinDbg Preview (现在版本更新,预览版已经更名为正式版本 WinDbg)版本则需要去 Windows 官方网站下载,下载地址:安装 WinDbg
下载链接:WinDbg下载链接
下载完成后,双击即可进入 Windows 应用商店安装界面,选择安装即可完成安装。
虚拟机下载安装
下载安装虚拟机软件 VMware
Windows 下的虚拟机软件有很多,比如 VMware、VirtualBox 等等。我个人习惯用 VMware,所以这里我选择下载安装的是 VMware。
和一般的 Windows 应用程序安装步骤一样,安装完成后打开 VMware,首次打开界面是空的 (因为还没有新建虚拟机)。如下图:
下载 Windows 镜像,新建虚拟机
安装好 VMware 软件后,我们需要去下载调试所需的 OS 镜像(Windows 镜像),我这里开发调试的是 Windows 10 版本,所以去官网下载对应的系统镜像:
下载完成系统镜像后,我们打开 VMware ,选择新建虚拟机,导入系统镜像,然后根据提示进入新建虚拟机就可以完成了。下面是我新建好的虚拟机页面:
WinDbg 建立连接
正常设置目标机器的 Dbg server 步骤参考这个链接:自动设置 KDNET 网络内核调试,基本操作是通过 kd.exe 设置机器名称及 key。然后在宿主机上使用 WinDbg 填入对应的 IP 和 key 进行连接即可。
但是我们在构建开发环境的时候,已经在本机上安装好了 VS2019,所以这里就可以利用 VS2019 的功能来新建虚拟机链接。
在 VS2019 菜单栏中点击“扩展”——“Driver”——“Test”——“Configure Devices”。
选择添加新的机器。
如果这里配置出现失败很大可能是网络原因,你需要确定你输入的目标机器的 IP 是正确的,并且是可以被本机正常访问的。在目标机器上使用 powershell 查看一下:
ipconfig
ping <本机IP>
同样,在本机上也测试一下,确保本机也可以正常访问虚拟机 IP
在这里,VS2019 会帮助我们进行目标机器的服务配置,配置完成后会自动重启目标机器,然后我们就可以正常使用了。在完成配置后会出现目标机器的 KEY(这个很重要)。
通过 VS2019 能帮助我们很方便完成对目标机器的 Windbg 的配置,我们拿到对应的 KEY 后就可以在 Windbg 中填入这些信息来使用 Windbg。
在 Windbg 的 “文件” 选项中选择 “Attach to kernel”,然后将刚刚 VS2019 中拿到的信息填入就可以建立 WinDbg 双机调试链接。
使用演示
通过 Windbg 建立连接后,我们可以使用 break 将当前内核进程停下来,这样就可以输入 dbg 命令来进行内核调试: