方法1:
1> 先用DeviceTree.exe查看指定的过滤驱动的Load Address(加载地址)
2> 再用LordPE.EXE查看指定过滤驱动文件的入口点地址
3> 计算过滤驱动的DriverEntry函数内存地址 DriverEntry函数内存地址 = Load Address + 入口点地址

例子:
1> Load Address = 0xFAABF000
2> 入口地址 = 0x3400
3> Windbg下断点 bu 0xFAABF000+0x3400

方法2:
1> 先用DeviceTree.exe查看指定的过滤驱动的Service Name
2> 再用LordPE.EXE查看指定过滤驱动文件的入口点地址
3> 计算过滤驱动的DriverEntry函数内存地址 DriverEntry函数内存地址 = Service Name + 入口地址

例子:
1> Service Name是 ntfs
2> 入口地址 = 0x3400
3> Windbg下断点 bu ntfs+0x3400

方法3:

windbg调试时,通过u Module!DriverEntry看到机器指令,然后选一个恰当的地址(或者直接DriverEntry第一条指令的地址也可)比如是f8399695,那么,直接bu f8399695即可。

或者有符号文件,则直接 bu Module!DriverEntry

方法4:

编写源代码时,在DriverEntry开头,加
#ifdef DBG

__asm int3;

#endif

那么,调试时,执行到DriverEntry的__int 3,自然会停下来。

补充:注意,在DriverEntry处下断点,最好是用bu命令,而不是bp命令。

bu命令用来设置一个延迟的、以后再求解的断点,对未加载模块中的代码设置断点。

实现原理:当指定模块被加载时,才真正设置这个断点。

对动态加载模块的入口函数或初始化代码处 加断点特别有用。

另外也可以用:sxe ld [moduleName]进行下段;

例子:

sxe ld test.sys

这样当系统启动test.sys驱动的时候就会断下。

或者用bpload [moduleName]进行下段

例子:

bpload test.sys

Windbg对过滤驱动DriverEntry函数下断点技巧的更多相关文章

  1. android在JNI_OnLoad入口函数下断点动态调试so库

    一般来说,很多APK的校验代码,都会在程序运行的时候自动加载一些动态so库,然后执行这些库中的校验代码.所以为了能够通过程序的校验,我们必须在执行这些函数之前下断点——理想的方法就是在JNI_OnLo ...

  2. [转载]文件过滤驱动 文件系统激活通知 IoRegisterFsRegistrationChange函数实现

    IoRegisterFsRegistrationChange 注册一个文件系统变动回调函数,用来被通知文件系统的激活和注销,激活是指第一次加载文件系统,当一个文件系统已经加载后,当加载一个同种文件系统 ...

  3. 《寒江独钓_Windows内核安全编程》中修改类驱动分发函数

    最近在阅读<寒江独钓_Windows内核安全编程>一书的过程中,发现修改类驱动分发函数这一技术点,书中只给出了具体思路和部分代码,没有完整的例子. 按照作者的思路和代码,将例子补充完整,发 ...

  4. 基于Minifilter框架的文件过滤驱动理解

    概述 Minifilter即File System Minifilter Drivers,是Windows为了简化第三方开发人员开发文件过滤驱动而提供的一套框架,这个框架依赖于一个称之为Filter ...

  5. ------- 软件调试——注销 QQ 过滤驱动设置的事件通知 CallBack (完)-------

    ---------------------------------------------------------------------------------- 本系列的最后一篇演示如何通过调试手 ...

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

    windbg源码驱动调试   环境信息 虚拟机:win7 32位 windbg:6.12(版本不存在太大影响) 设置过程 windbg与虚拟机连接:链接 配置windbg 配置好双机调试后,点击win ...

  7. (转)支持 PS/2 与 USB 的键盘过滤驱动(可卸载)

    Author:  sinisterEmail:   sinister@whitecell.orgHomepage:http://www.whitecell.org Date:    2007-02-2 ...

  8. 一个文件系统过滤驱动的demo

    因为没写过FSD过滤驱动,所以拿来练练手,没有什么技术含量.参考自Win内核安全与驱动开发. 先梳理一下大概的流程,就是怎么去绑定设备栈.怎么去过滤各种请求的. 首先肯定是要绑定设备栈的,来看下怎么绑 ...

  9. 驱动开发:内核枚举Minifilter微过滤驱动

    Minifilter 是一种文件过滤驱动,该驱动简称为微过滤驱动,相对于传统的sfilter文件过滤驱动来说,微过滤驱动编写时更简单,其不需要考虑底层RIP如何派发且无需要考虑兼容性问题,微过滤驱动使 ...

随机推荐

  1. 约瑟夫环的java解决

    总共3中解决方法,1.数学推导,2.使用ArrayList递归解决,3.使用首位相连的LinkedList解决 import java.util.ArrayList; /** * 约瑟夫环问题 * 需 ...

  2. [USACO]6.1.3 cow xor(二进制+Trie)

    题意:给你一个序列(n<=100000),求出一个连续的子序列[i,j]使得ai xor ai+1 xor…… xor aj最大,求出这个最大值(其中每个数<=2^21) 分析:题目和求一 ...

  3. Javascript基础系列之(七)函数(argument访问函数参数)

    argument是javascript中函数的一个特殊参数,例如下文,利用argument访问函数参数,判断函数是否执行 <script type="text/javascript&q ...

  4. EF,MVC相关项目请参见→

    End_Test和YM_EF抽象工厂   这两个项目

  5. nginx + Lua 实现自定义WAF

    文章摘自:https://github.com/unixhot/waf wget git@github.com:unixhot/waf.git

  6. xml文件的读写操作

    1.直接上代码:包含了xml文档的创建,读取xml文档,创建根节点,向根节点中添加子节点,保存xml文档----------先来张效果图: static void Main(string[] args ...

  7. Servlet Study 1

    this content below are come from the  JSR154 by sun Just for record purpose. if this relate to some ...

  8. hdu1950 最长上升子序列nlogn

    简单. #include<cstdio> #include<cstring> #include<iostream> using namespace std; ; i ...

  9. dispatch_sync may result in dead-lock

    以下代码会引起死锁 dispatch_block_t block = ^{ ; i < ; i++) { NSLog(@"dispatch_sync:%d", i); } } ...

  10. RHCS

    简介 Red Hat Cluster Suite :红帽子集群套件 高可用性.高可靠性.负载均衡.存储共享 高可用集群是 RHCS 的核心功能.当应用程序出现故障,或者系统硬件. 网络出现故障时,应用 ...