Windbg对过滤驱动DriverEntry函数下断点技巧

方法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命令用来设置一个延迟的、以后再求解的断点,对未加载模块中的代码设置断点。

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

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

时间: 2024-11-05 13:31:23

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

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

一般来说,很多APK的校验代码,都会在程序运行的时候自动加载一些动态so库,然后执行这些库中的校验代码.所以为了能够通过程序的校验,我们必须在执行这些函数之前下断点--理想的方法就是在JNI_OnLoad入口函数下断点. 在2.3.3模拟器中详细步骤如下: ①在控制台输入adb shell 进入手机,然后使用  am start -D -n 包名/类名,以等待调试的模式启动APK应用: 这里需要说明的是 "包名/类名"的书写方法: # am start -n {包(package)名}

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

IoRegisterFsRegistrationChange 注册一个文件系统变动回调函数,用来被通知文件系统的激活和注销,激活是指第一次加载文件系统,当一个文件系统已经加载后,当加载一个同种文件系统的卷时,该文件系统就和激活没关系.话说该函数调用后,激活的文件系统会重新激活一遍,在2k SP4之后的系统都会这样做. 现在考虑下,这种机制是怎么实现的,猜测是在注册的时候,注册完成后,系统将各种类型的文件系统,都调用该回调函数一遍,来一次所有文件系统激活的通知.而事实上,也应该如此,reactOs

键盘过滤驱动

在笔者接触驱动到如今以来一以后大半个月的时间,从中让我深深的体会到了万事开头难,以及学习持之以恒的重要性.笔者也是个驱动新人,開始接触驱动的时候看着张帆的<Windows驱动开发技术具体解释>讲的挺细,对新手来说是个不错的学习资料,可是更重要的还是自己要多动手练习,笔者在学习到同步操作的相关知识的时候,实在是看天书.最后还是放弃了学习本书.再找了本楚狂人的资料学习,感觉本书对新手来说还是比較吃力的,当中笔者就是这样,非常多知识点不是非常明确,仅仅能凭借自己的感觉去做,只是造成的后果就是无情的蓝

一个简单的文件系统过滤驱动框架

很多人认为文件系统过滤驱动很复杂,其实也有一定道理,因为需要有很多细节需要考虑到,这是一个简单的文件系统过滤驱动,抛去了大部分细节,留下了一个简单的框架,其实这样文件系统过滤驱动就变得蛮简单的,很多接口可以不用实现,只要知道大致流程,其它都将会很清晰. #define DBG 1 #include <ntifs.h> #include "fsfilter.h" PDEVICE_OBJECT g_Cdo; PDRIVER_OBJECT g_MyDriver; NTSTATUS

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

最近在阅读<寒江独钓_Windows内核安全编程>一书的过程中,发现修改类驱动分发函数这一技术点,书中只给出了具体思路和部分代码,没有完整的例子. 按照作者的思路和代码,将例子补充完整,发现将驱动安装在WIN7 32位环境下,键盘失效. 经调试发现,可能的原因是替换了\\Driver\\Kbdclass类驱动的所有分发函数导致,如果只替换分发IRP_MJ_READ的函数,不会有问题,以下为代码 1 //替换分发函数 来实现过滤 2 #include <wdm.h> 3 #inclu

摘除过滤驱动

开始本文之前先膜拜一下老V~ "无法F5的驱动,不是好驱动啊~不是好驱动啊~ " -----killvxk语录 这两天下午的时间,破解那个驱动保护搞得好痛苦,每次关机都要蓝一次,有时候设备还不工作,郁闷... 而且VMware用得很伤心,每次开GuestOS都得6分钟左右,要不是时间不多懒得换它,早就把它扔到垃圾堆里去了~~~~~~~~~~ 忘了今天主题了,摘除过滤驱动来着~ 某些驱动创建自己的Device之后调用IoAttachDeviceXXX函数来将自己的设备附加到目标设备上,成

[转载]windows过滤驱动程序设计入门(驱动程序基本结构,设备栈,IRP栈和工作原理)

本文转载自: http://blog.csdn.net/arvon2012/article/details/7789724 最近在学习windows驱动设计,认真看了些教材后总结了我认为驱动中都会涉及到,也最重要的概念,和大家分享.如果有说的不对的请大家留言指出.谢谢! 这里主要是写概念,代码涉及的不多也不详细,但是我会说出涉及到的API,详细的使用细节大家可以自己动手搜搜.掌握下面的概念之后,看驱动开发的教材里的代码,或者理解教材里说的内容应该就顺利很多! 过滤驱动程序概括: 对于window

File System Minifilter Drivers(文件系统微型过滤驱动)

问题: 公司之前有一套文件过滤驱动,但是在实施过程中经常出现问题,现在交由我维护.于是在边看代码的过程中,一边查看官方资料,进行整理. 这套文件过滤驱动的目的只要是根据应用层下发的策略来控制对某些特定文件的控制,例如根据后缀名来决定是否允许查看,是否允许查看指定目录啊之类的功能. 介绍: MSDN上对可安装的文件系统驱动介绍http://msdn.microsoft.com/en-us/library/windows/hardware/ff548143(v=vs.85).aspx:其中树形结构菜

文件过滤驱动实现目录重定向(一)good

文件过滤驱动拦截的IRP主要包括以下几个:IRP_MJ_CREATE,文件创建操作,文件的任何操作,都是从这里开始的.IRP_MJ_CLEANUP,文件的HANDLE句柄全部关闭会触发这个消息IRP_MJ_CLOSE,文件对象 FILE_OBJECT引用减为0,文件对象即将被删除时触发.IRP_MJ_READ.IRP_MJ_WRITE, 文件的读写操作IRP_MJ_QUERY_INFORMATION 查询文件信息,比如文件创建修改时间,文件大小等等.IRP_MJ_SET_INFORMATION