驱动程序的调试(windbg双机调试)

时间:2024-04-01 22:13:41

这篇博客是接着上一篇的,主要写一下配置好了双机调试环境之后,如何使用windbg来调试自己开发的驱动程序。需要看配置双机调试环境的朋友可以去我的上一篇博客,里面有详细的从安装虚拟机到搭建开发环境以及双机调试环境的步骤
驱动开发环境以及双机调试环境搭建

配置完了双机调试的环境以后,在主机使用windbg已经可以hook虚拟机的操作系统,如下图

驱动程序的调试(windbg双机调试)

可以看到我们的调试机已经hook住了虚拟机,这时按Ctrl+Pause就可以使虚拟机的操作系统暂停运行。
输入g或者按F5可以使其恢复运行。

这时将想要调试的驱动程序安装在虚拟机OS中,就是把 Debug里生成的证书,sys文件和inf文件以及pdb符号文件拿到虚拟机里,然后右键inf文件安装。如果是NT类型的驱动,可以使用DriverMonitor安装。

驱动程序的调试(windbg双机调试)

需要注意的是,我们开发的驱动还没有进行签名,所以只有把操作系统改为测试模式才可以安装我们自己的驱动。打开CMD输入”bcdedit /set testsigning on”然后重启电脑,桌面右下角有下图的显示就说明设置成功了。

驱动程序的调试(windbg双机调试)

安装成功后可以看到这个路径下有相关的资源文件,将pdb文件复制到主机的同一路径下,新建文件夹保持路径相同(我发现如果路径不同好像会出现符号文件下载完了但是加载有异常)下图是我主机WIN10的符号文件路径

驱动程序的调试(windbg双机调试)

然后在主机的windbg添加符号路径,并且在驱动的入口设置断点
.sympath+ 路径 命令添加符号文件路径
bp 驱动名!函数名 命令添加断点

驱动程序的调试(windbg双机调试)
驱动程序的调试(windbg双机调试)

这时已经在入口添加断点了,直接在虚拟机打开CMD,输入sc start FsFilter(驱动名)

驱动程序的调试(windbg双机调试)

可以看到windbg会自动打开源代码文件,并且停在你打的断点位置
接下来可以使用F9 F10 F11 F5来进行单步调试,和VS是一样的,很方便。
这里也可以打开一些窗口,比如变量窗口和内存窗口来监视相关变量。

驱动程序的调试(windbg双机调试)