首页
社区
课程
招聘
[翻译]WinDbg内核调试配置方法介绍
2018-8-11 22:05 6458

[翻译]WinDbg内核调试配置方法介绍

2018-8-11 22:05
6458

        本文中,笔者介绍了如何利用WinDbg调试器和虚拟机,为调试运行于Windows内核空间的驱动程序或代码配置环境。

        在很多情况下,总有人向我咨询如何安装使用WinDbg调试器。为此,在本文中,我将向你展示如何利用WinDbg调试器和虚拟机,为调试运行于Windows内核空间的驱动程序或代码配置环境。

        在本文实例中,我将使用安装了Windows 10系统的主机,来对运行于VMWare平台之上的虚拟机进行调试。另一种可能的情况是,使用一台虚拟机作为调试方,而另一台作为调试目标;但我们并不打算在本文中对这种情况的实例进行深入介绍。

        第一步是从微软官网(网址:https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk)上下载WinDbg安装程序。我们将选择下载调试工具的安装程序,而不必包含其他不需要的功能,如下图所示:

        在下载完成之后,运行开始安装(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)”菜单项)。如果现在转到虚拟机中,我们会看到虚拟机处于冻结状态,即无法移动鼠标或者从键盘获得响应。考虑到虚拟机处于暂停在某条指令的状态下,这很正常。在主机端,我们将看到某些类似于这种状态的输出信息,如下图所示:


        从最后一行能够看到,我们已经利用一条int 3指令暂停了指令的执行过程,这个过程停在了内核内存位置处,并且地址行是64位的格式。底部是控制台,我们可以利用控制台开始向WinDbg调试器发送命令。

Windows XP

        如果需要调试一台安装WinXP系统的虚拟机,那么除了启动配置以外,其他所有步骤都一样。我们需要手动编辑“C:\boot.ini”文件,而不是使用bcdedit命令(该命令在Windows XP系统中不可用)。这个文件处于隐藏状态,因此我们可能需要改变文件夹选项,这样它才能为我们展示隐藏文件,并且受系统保护的文件也不再隐藏。


        接下来,我们复制第一项(第一项以“[操作系统(operating systems)]”的内容格式呈现),更改其名称从而确保它不会与另一项混淆,然后添加调试选项。你只需要保存文件并重启系统,就可以看到新的启动选项:


        通过按照这些步骤进行操作,你就可以顺利地在Windows系统内核空间中使用调试工具。你还等什么呢,赶紧试试这个配置过程吧!




原文网址:https://www.welivesecurity.com/2017/03/27/configure-windbg-kernel-debugging/

本文由  看雪翻译小组  木无聊偶  编译

转载请注明来源


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

最后于 2018-8-11 22:06 被木无聊偶编辑 ,原因:
收藏
点赞2
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回