windbg源码驱动调试 + 无源码驱动调试

摘要:
Windbg源代码驱动的调试环境信息虚拟机:win732位windg:6.12设置将windg连接到虚拟机的进程:链接以配置windg。配置双机调试后,单击windg菜单栏中的debug-˃Break以生成中断。在将控制权交给windag以生成中断后,单击File-˃OpenSourseFile打开源代码文件,将显示代码窗口。因为有驱动器源代码,您可以在驱动器入口的断点处直接调试,格式为“bu driver name!DriverEntry”。此处要调试的驱动程序名为Clear,因此输入调试命令“buClear!
windbg源码驱动调试
 

环境信息

虚拟机:win7 32位

windbg:6.12(版本不存在太大影响)

设置过程

  • 配置windbg

配置好双机调试后,点击windbg菜单栏的debug->Break产生中断,控制权交给windbg

windbg源码驱动调试 + 无源码驱动调试第1张

中断产生后,点击File->Open Sourse File(Ctrl+O)打开源码文件,就会显示出代码窗口

windbg源码驱动调试 + 无源码驱动调试第2张

windbg源码驱动调试 + 无源码驱动调试第3张

因为有驱动源码,可以直接在驱动入口处下断点进行调试,格式为"bu 驱动名!DriverEntry",这里调试的驱动名为Clear,所以输入调试命令"bu Clear!DriverEntry",最后输入"g"把运行权交回给虚拟机

windbg源码驱动调试 + 无源码驱动调试第4张

  • 虚拟机加载驱动,windbg触发中断即可进行源码调试

使用驱动加载工具加载驱动,正常情况下会触发中断并把控制权交给windbg

windbg源码驱动调试 + 无源码驱动调试第5张

如果看到下面这些信息,说明成功中断在驱动的入口点处,可以开始源码调试

windbg源码驱动调试 + 无源码驱动调试第6张

windbg源码驱动调试 + 无源码驱动调试第7张

无源码驱动调试
  • 定位驱动入口点

使用CFF Explorer打开驱动文件,查看Option Header里AddressOfEntryPoint的值

windbg源码驱动调试 + 无源码驱动调试第8张

 

通过驱动名+入口点偏移的方式可以定位到驱动的入口点,这里驱动名为cscc,所以应该下断点的位置为cscc+0x2920

 
 

  • 入口点处下断点

使用驱动加载工具在虚拟机中加载驱动,加载完后点击windbg菜单栏的debug->Break产生中断,把控制权交给windbg,然后在调试窗口输入命令bp cscc+0x2920,这里可以使用lmvm+驱动名(列出驱动信息)和bl(列出断点信息)来查看断点是否正确设置

windbg源码驱动调试 + 无源码驱动调试第9张

最后点击windbg的GO(F5)跑起来,这时候就会中断到驱动入口处

windbg源码驱动调试 + 无源码驱动调试第10张

windbg源码驱动调试 + 无源码驱动调试第11张

 

比较一下IDA反编译的驱动入口点代码和windbg断在的入口点

windbg源码驱动调试 + 无源码驱动调试第12张

  参考

windbg双机调试:https://deelmind.cn/2018/06/13/Windbg%E5%8F%8C%E6%9C%BA%E8%B0%83%E8%AF%95/

 

VS 2013驱动开发 + Windbg + VM双机调试:https://www.cnblogs.com/lfls128/p/4971213.html

 

使用winDbg双机调试SYS无源码驱动程序:https://www.write-bug.com/article/1685.html

 

驱动调试中怎么样让windbg停在DriverEntry:https://blog.csdn.net/xum2008/article/details/7209785

免责声明:文章转载自《windbg源码驱动调试 + 无源码驱动调试》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Maven的默认中央仓库以及修改默认仓库&配置第三方jar包从私服下载python使用imap-tools模块下载邮件中的附件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

关于Microsoft Virtual PC 2007安装使用

Virtual PC 和 VMWare 都是世界顶级虚拟机软件,使用了当今最先进的虚拟技术。前者为微软出品,自然对Microsoft Windows具有天然的亲和力。安装运行虚拟机,可以完成多项任务,可谓好处多多。下面,以Microsoft Virtual PC 2007为例(兼容Vista),对网友提出的问题进行综合答复—— 1。运行虚拟操作系统,在硬件上...

aspnetcore源码学习(一)

---恢复内容开始--- 笔者从事netcore相关项目开发已经大半年了,从netcore 1.0到现在3.0大概经过了3年左右的时间,记得netcore刚出来的时候国内相关的学习资料缺乏,限制于外语不大熟练的限制国外的相关书籍看起来相当吃力,于是在当当网上买了一本价值70多的入门书籍,买回来却发现内容都是挂羊头卖狗肉,深深地鄙视这些为了赚钱不顾内容的作者...

Spring Boot源码(一)Spring Boot源码环境搭建

一、前言   既然要分析源码,那就直接下载源码来本地运行分析,是最有效的方案,但是在开始看这篇博客之前,希望小伙伴们有个心理准备...   源码编译是比较麻烦的一件事,我大概整了一天才基本整好源码环境,期间可能遇到各种奇奇怪怪的问题上网找答案,这里把流程记录一下,需要的小伙伴可以直接跟着步骤走,还是可以顺利编译通过的,亲测可行。 二、源码环境搭建 下载源码...

Linux下为Calibre书库打中文目录名与文件名补丁

本文由来 临近下班突然看到知乎上有篇文章是给Calibre打中文目录与文件名补丁的,想起我之前为啥放弃Calibre的——存进书库里书的名称都变成了拼音!手动找起来或者搜索工具找起来太麻烦了(有时想不起用Calibre,直接用搜索软件+PDF阅读器就看了),用过Calibre的同学应该知道——添加到书库里的书相当于从外边复制过来的,每本书都存两份很占空间呀...

Netty之EventLoop-netty学习笔记(11)-20210813

线程模型概述 基本的线程池化模式可以描述为: 从池的空闲线程列表中选择一个 Thread,并且指派它去运行一个已提交的任务(一个Runnable 的实现);当任务完成时,将该 Thread 返回给该列表,使其可被重用。 虽然池化和重用线程相对于简单地为每个任务都创建和销毁线程是一种进步,但是它并不能 消除由上下文切换所带来的开销,其将随着线程数量的增加很快...

005_MAC下的VMware fushion快捷键(折中)

由于MAC和VMware Fushion虚拟机之间有一些快捷键的映射,所以Windows虚拟机就找了一个折中的方案。现总结MAC下的win常用快捷键==> <1>最小化窗口(Alt + Space + N)。这时采用alt + tab切换应用程序。 如果是想要: 显示桌面 这个效果的话, 开始(键盘上的windows图标那个按键) + D...