方法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. Orchard 刨析:Logging

    最近事情比较多,有预研的,有目前正在研发的,都是很需要时间的工作,所以导致这周只写了两篇Orchard系列的文章,这边不能保证后期会很频繁的更新该系列,但我会写完这整个系列,包括后面会把正在研发的东西 ...

  2. php中命名空间的使用

    简单使用 命名空间主要解决函数/类冲突的问题.由于PHP中中不允许函数重载,所以我们要使用的到命名空间的.先看一个简单的例子. <?php namespace A; public functio ...

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

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

  4. AngularJS开发指南1:AngularJS简介

    什么是 AngularJS? AngularJS 是一个为动态WEB应用设计的结构框架.它能让你使用HTML作为模板语言,通过扩展HTML的语法,让你能更清楚.简洁地构建你的应用组件.它的创新点在于, ...

  5. 配置ipvsadm服务

    LVS的三种包转发方式      LVS提供了三种包转发方式:NAT(网络地址映射).IP Tunneling(IP隧道).Direct Routing(直接路由)     不同的转发模式决定了不同的 ...

  6. 这些天自身努力的体会,关于java方面的

    以前也是接触过java,这学期的软件工程课和周围同学各种比赛取得不错的成绩,确实令人倍感压力.为此这几天使劲脑补了一下java的知识,甚至不惜为此翘课,了解了java中的网络编程,对于sokectse ...

  7. LNMP 源码安装

    参考文档:http://essun.blog.51cto.com/721033/1288442 安装的时候提示要安装zlib库 yum -y install zlib zlib-devel 源码安装P ...

  8. PHP ADLogin

    <?php $user = 'aaaa'; $password = 'xxxx'; $domain = 'b.a.com'; //设定域名 $port = 3268; $basedn = 'dc ...

  9. 大概了解了flexbox

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  10. poj3468 splay(成段跟新 区间求和)

    用splay做了一遍. 建树时是按照数列序号从小到大排好的,每个节点左子树的序号小于右子树的序号及这个节点本身.由于查询[l,r]要伸展l-1,r+1所以我们要多加2个结点,保证边界处理时不出问题.由 ...