Windows内核学习笔记第001篇:配置VirtualBox与WinDbg实验环境

一、前言

如今有越来越多的朋友开始学习逆向工程的相关知识,对诸如软件破解,软件调试等领域有自己深刻的见解,并能够熟练使用OllyDBG这款逆向分析软件。不过,这个软件都是针对Ring3层的,作为一般的分析与调试工具来使用,是足够的了。但是随着恶意程序编写技术的不断进步,恶意程序的编写者们逐渐将目光深入到了Ring0层,这也就要求安全技术人员要进入系统内核来与这些恶意程序作斗争。而在内核级别,我们能够使用的调试工具基本上就只有WinDbg了。而我个人认为,是否能够熟练使用WinDbg是专业人士与非专业人士的分水岭。因为之所以WinDbg显得不是那么流行,与其配置过程复杂,界面不如OD友好有很大的关系,加上如果想把WinDbg的功能发挥到极致,那么就势必要对计算机系统有非常深刻的认识,这就使得很多朋友望而却步。

我作为一个初学者,深知这道坎很难迈过去,于是我就开始记录我的Windows内核学习笔记,从零开始,一步一步地深入学习。而随着我们讨论的不断深入,相信大家能够和我一同获得成长,从一个小白起步,逐渐探索Windows内核。这里的每一个知识点我都实际测试过,是切实可行的,所以大家可以放心地参考。

需要特别说明的是,由于这个系列主要是抱着学习的目的,因此我的文章基本上是属于半转载半原创性质的。之所以这么说,是因为文章的核心内容我参考了一些资料,我弄明白了以后,再补充一些知识,之后用浅显的语言来将知识说清楚。所以我都会在文章中讲明参考了哪篇文章或哪本书,以及作者是谁。另外,为了避免过多地讨论理论知识,我会主要以实际例子的形式进行讲解,相信这样会让大家对于知识记忆深刻。

本文所讲的VirtualBox+WinDbg的配制方法,主要参考自“女孩不哭”在“博客园”写作的博文——《VirtualBox+Windbg 进行双机调试的方法》,原文网址为:,特此说明。

二、VirtualBox虚拟机的配置

若想使用WinDbg来进行内核调试,那么就必须采用双机调试的方法。这里的双机指的是两台计算机。大家如果有条件,当然可以使用两部电脑进行调试,但是我相信绝大多数朋友更习惯于用一台计算机就实现调试操作,那么就一定要使用虚拟机的帮助了。我在《病毒木马查杀》系列中使用的是Oracle公司的VMVirtualBox,这款软件已在我的计算机中安装完毕,并且已经在虚拟环境中安装上了Windows XP SP3操作系统,所以这里继续拿来使用。

虚拟机配置的第一步是建立一个串口,用于模拟真实两台计算机之间的连接。首先启动VirtualBox,先不要启动虚拟系统,进入“设置(S)”,选择左侧的“串口”项,然后进行如图的配置:

图1 设置串口

单击确定后,进入我们所安装的Windows XP系统,接下来需要配置调试模式。来到C盘根目录下,设置相应的文件夹选项:

图2 设置文件夹选项

这里需要将“隐藏受保护的操作系统文件(推荐)”前方的对勾去掉,然后设置“显示所有文件和文件夹”,再单击确定。之所以要这样设置,是为了显示出C盘根目录下的boot.ini文件。因为Windows XP主要依赖boot.ini系统文件来确定计算机在重启(引导)过程中显示的可供选取的操作系统类别。而boot.ini在缺省状态下被设定为隐含和系统文件属性,并且被标识为只读文件。在文件夹选项设置完成后,boot.ini就显示出来了。然后对该文件进行编辑:

图3 编辑boot.ini文件

图3的红框中就是我们所需要添加的内容。其中/debug标记代表开启内核调试,/debugport=com1标记告诉系统使用哪个端口来连接调试系统与被调试系统,接下来的/baudrate=115200标记用来指定串口数据传输速率。为了方便识别开机系统选项,我将第二启动项命名为“Microsoft Windows XP Professional with KernelDebugging”。保存后重启虚拟机中的系统,在启动界面就出现了系统选择:

图4 系统的选择

这样,当我们以后需要用WinDbg对系统进行调试时,就可以启动Debug模式的Windows了。

三、WinDbg的安装与配置

WinDbg可以单独进行安装,但是标准的做法是下载并安装WDK,WDK中就包含有WinDbg这个调试器。而且安装好WDK之后,还可以进行驱动编程,由于我以后还是需要学习驱动的编写的,所以我这里安装WDK。

不论是采用微软的哪个操作系统的WDK,都需要在MSDN上进行下载。在我写作本文的时候,该下载地址为,如果各位读者发现这个地址已经失效,那么请自行搜索。人生最大的错误是不断担心会犯错

Windows内核学习笔记第001篇:配置VirtualBox与WinDbg实验环境

相关文章:

你感兴趣的文章:

标签云: