WinDBG 配置内核双机调试

WinDBG 是在 windows 平台下,强大的用户态和内核态调试工具,相比较于 Visual Studio 它是一个轻量级的调试工具,所谓轻量级指的是它的安装文件大小较小,可是其调试功能,却比VS更为强大,WinDBG因为是微软的产品因此可以调试Windows系统的内核,另一个用途是能够用来分析dump数据,本笔记用于记录WinDBG内核调试的配置过程,并附有经常使用命令的使用方法。windows

WinDBG下载地址:连接:https://pan.baidu.com/s/18VIXKdFdfu7ZuKOql7Z_Iw 提取码:9se4服务器

1.首先须要安装VmWare虚拟机,并自行安装好Windows7系统,虚拟机关闭状态下添加一个管道虚拟串口,此处须要删除打印机,不然串口之间冲突。工具

操做步骤:【编辑虚拟机设置】 -> 【添加】 -> 【串行端口】 -> 【完成】 ->并配置如下参数
参数配置:【使用命名管道】 -> 【\.\pipe\com_1】 -> 【该端是服务器,另外一端是应用程序】 -> 【轮询时主动放弃CPU】->【肯定】命令行

2.开启虚拟机中的Windows7系统,而后以管理员身份运行CMD命令行,输入bcdedit命令,能够查看到系统的当前启动项,若是是新的系统,则只会有一个 {current} 的启动项。debug

3.接着咱们连续执行下方的三条命令,依次创建启动项,并激活调试模式。3d

bcdedit /copy {current} /d "Windwos7"
bcdedit /debug ON
bcdedit /bootdebug ON
bcdedit /timeout 10

4.最后查看一下当前调试配置选项,执行命令 bcdedit /dbgsettings,显示出使用的第一个串口,波特率为115200bps,保持默认不须要修改。调试

5.配置完成后,从新启动系统,在开机的时候选择Windows7 [启用调试程序]则系统会黑屏,说明已经正常进入调试模式了。code

6.接着回到物理机上面,咱们在命令行中切换到WinDBG的根目录下,并执行如下命令,便可链接虚拟机串口进行调试了。
执行命令 Windbg.exe -b -k com:port=\\.\pipe\com_1,baud=115200,pipe 以下图,已经成功链接上了。blog

7.为了方便调试,能够经过【File菜单】加载一下符号文件,也能够按下【Ctrl+S】并输入。
输入命令 srv*c:\symbols*http://msdl.microsoft.com/download/symbols 自动下载符号保存到C盘下。ip

到此为止,咱们的内核调试环境已经配置并可以独立工做了,接下来,咱们将手动编译一个简单的驱动文件,并经过WinDBG对其进行调试分析。

1.首先咱们须要编写一个简单的驱动程序,因为咱们的驱动程序比较的简单,因此咱们只可以从DriverEntry驱动开始执行以前下一个断点,此处咱们能够经过内联汇编的方式手动加入一个断点,其最终代码以下所示。

#include <ntddk.h>

VOID UnDriver(PDRIVER_OBJECT driver)
{
    DbgPrint(("Uninstall Driver Is OK \n"));
}

NTSTATUS DriverEntry(IN PDRIVER_OBJECT Driver,PUNICODE_STRING RegistryPath)
{
	__asm{ int 3 }                                // 内联汇编添加 int 3 断点
    DbgPrint(("hello lyshark \n"));
    Driver->DriverUnload = UnDriver;
    return STATUS_SUCCESS;
}

2.如今咱们启动Windows7系统,并经过上面的方法使之与WinDBG联机,当WinDBG断下时,手动添加符号文件。

按下 Ctrl +S 加入如下符号文件,最后的路径是你驱动编译所在路径。
配置:srvc:\symbolshttp://msdl.microsoft.com/download/symbols ; C:.....\Projects\wdk\

添加符号完成之后,在命令窗口输入g并按下回车键,过程当中可能须要按下屡次g键,使Windows系统正常加载并运行。

当Windows系统加载完成之后,拖入咱们的驱动文件wdk.sys,并经过驱动加载工具加载运行,此时Windows系统会卡死,回到WinDBG中发现已经能够进行源码调试了哈。

相关文章
相关标签/搜索