博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WinDBG 配置内核双机调试
阅读量:5117 次
发布时间:2019-06-13

本文共 1897 字,大约阅读时间需要 6 分钟。

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

WinDBG下载地址:链接: 提取码:9se4

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

操作步骤:【编辑虚拟机设置】 -> 【添加】 -> 【串行端口】 -> 【完成】 ->并配置以下参数

参数配置:【使用命名管道】 -> 【\.\pipe\com_1】 -> 【该端是服务器,另一端是应用程序】 -> 【轮询时主动放弃CPU】->【确定】

1379525-20190919102117206-1152944650.png

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

1379525-20190919102432687-2101088340.png

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

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

1379525-20190919102730652-1279876375.png

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

1379525-20190919102917408-533256322.png

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

1379525-20190919103036969-2135941174.png

6.接着回到物理机上面,我们在命令行中切换到WinDBG的根目录下,并执行以下命令,即可连接虚拟机串口进行调试了。

执行命令 Windbg.exe -b -k com:port=\\.\pipe\com_1,baud=115200,pipe 如下图,已经成功连接上了。

1379525-20190919103415443-3875014.png

7.为了方便调试,可以通过【File菜单】加载一下符号文件,也可以按下【Ctrl+S】并输入。

输入命令 srv*c:\symbols*http://msdl.microsoft.com/download/symbols 自动下载符号保存到C盘下。

1379525-20190919103645393-2115028946.png

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

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

#include 
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 加入以下符号文件,最后的路径是你驱动编译所在路径。
配置:srv
c:\symbols ; C:.....\Projects\wdk

1379525-20190919124947916-1878423756.png

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

1379525-20190919125053536-784186228.png

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

1379525-20190919125433584-1281882057.png

转载于:https://www.cnblogs.com/LyShark/p/11547204.html

你可能感兴趣的文章
linux install ftp server
查看>>
嵌入式软件设计第8次实验报告
查看>>
算法和数据结构(三)
查看>>
Ubuntu下的eclipse安装subclipse遇到没有javahl的问题...(2天解决了)
查看>>
alter database databasename set single_user with rollback IMMEDIATE 不成功问题
查看>>
WCF揭秘——使用AJAX+WCF服务进行页面开发
查看>>
【题解】青蛙的约会
查看>>
IO流
查看>>
mybatis调用存储过程,获取返回的游标
查看>>
设计模式之装饰模式(结构型)
查看>>
面向对象的设计原则
查看>>
Swift3.0服务端开发(三) Mustache页面模板与日志记录
查看>>
【转】 FPGA设计的四种常用思想与技巧
查看>>
EntityFrameWork 实现实体类和DBContext分离在不同类库
查看>>
新手算法学习之路----二叉树(在一个二叉查找树中插入一个节点)
查看>>
autopep8
查看>>
GIT在Linux上的安装和使用简介
查看>>
基于C#编程语言的Mysql常用操作
查看>>
s3c2440实验---定时器
查看>>
MyEclipse10安装SVN插件
查看>>