-
-
[翻译]WinDbg内核调试配置方法介绍
-
发表于: 2018-8-11 22:05 6995
-
本文中,笔者介绍了如何利用WinDbg调试器和虚拟机,为调试运行于Windows内核空间的驱动程序或代码配置环境。
在很多情况下,总有人向我咨询如何安装使用WinDbg调试器。为此,在本文中,我将向你展示如何利用WinDbg调试器和虚拟机,为调试运行于Windows内核空间的驱动程序或代码配置环境。
在本文实例中,我将使用安装了Windows 10系统的主机,来对运行于VMWare平台之上的虚拟机进行调试。另一种可能的情况是,使用一台虚拟机作为调试方,而另一台作为调试目标;但我们并不打算在本文中对这种情况的实例进行深入介绍。
在下载完成之后,运行开始安装(setup)。根据主机的更新情况,安装过程中可能需要下载某些.NET Framework程序包或Windows系统更新程序。在安装过程中,请选择“调试工具(Debugging Tools)”,如下图所示:
在安装完成之后,我们将注意力转向对待调试的虚拟机进行配置。第一步是在引导表中生成一个实体,并为其开启调试选项。要完成这项工作,我们将选择使用一台Windows 7系统的客户机,在该系统中bcdedit命令可用于完成这些任务。
如上图所示,不带参数运行该命令的结果,为我们展示了引导管理器的配置选项,和引导表中的每一个实体(初始情况下只有一个实体)。然后要生成一个启动调试的新实体,最简单的方法是复制第一个实体,并对其进行改造,具体命令如下图所示:
在复制生成了名为“启用调试(Activated Debug)”的实体之后,调试模式得以开启。现在查看表中实体的话,我们会看到新的实体已经出现在其中。最后,bcdedit命令(参考网址:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/devtest/boot-parameters-to-enable-debugging)还可以用来对安装WinDbg的主机和虚拟机之间的通信环境进行配置。而我将向你展示另一种完成这项工作的方法:在虚拟机中使用“Win+R”组合键调出运行对话框,并在对话框中输入“msconfig”然后回车,你将进入到Windows系统启动特定配置环境中。在“启动”标签中,你能够对高级选项进行编辑,如下图所示:
我们的主机和虚拟机将通过COM2串行端口(或我们所选择的端口)进行通信,该端口的同步波特率为115200。我建议不要改变波特率,而是使用COM2端口代替COM1进行通信。考虑到虚拟机很可能没有串行端口,我们需要为其添加一个。对于VMWare平台,可以在配置界面中进行如下操作:
选择如图所示选项。重要的是,我们需要为其赋予形如“\\.\pipe\com_2”的名称。现在,所有内容都配置完毕,下一步需要做的就是重启虚拟机,使其以调试模式引导启动:
在选择了该选项之后,系统启动过程应该就和正常情况一样了。在桌面上,我们可以保存一个虚拟机快照,或者准备想要调试的相应环境。一切就绪之后,我们需要回到主机中,打开WinDbg调试器来开启调试会话。从“文件(File)”菜单中选择“内核调试(Kernel Debugging)”,然后在COM标签页中按照如下图所示的格式填写相关内容:
当点击“OK”按钮时,将连接WinDbg调试器,但此时我们无法与虚拟机进行交互,除非我们在它运行某条指令时选择暂停。要完成这项工作,请按住“Ctrl+Pause”组合键(或者“调试(Debug)->中断(Break)”菜单项)。如果现在转到虚拟机中,我们会看到虚拟机处于冻结状态,即无法移动鼠标或者从键盘获得响应。考虑到虚拟机处于暂停在某条指令的状态下,这很正常。在主机端,我们将看到某些类似于这种状态的输出信息,如下图所示:
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!