DoubleFilter调试记录

问题1: 驱动加载后,无法卸载

答: 检查DriverObject->DriverUnload = DriverUnload; --是否实现 

问题2: 驱动加载、卸载后,第二次无法加载了。

答:  IoRegisterFsRegistrationChange(DriverObject, SpyFsNotification); ---因为驱动是全局的,需要去注册

         IoUnregisterFsRegistrationChange(g_FileSpyDriverObject, SpyFsNotification);

问题3: VS2015编译win10平台的,不能加载到win7,直接蓝屏

问题4:  IoAttachDevice()过的,才可以IoDetachDevice(), 否则如果给没有Attach过的直接进行IoDetachDevice,那么也会蓝屏

问题5: 在DriverEntry(),所有的系统卷设备全部挂载,但是没有Read/Write注册派遣例程,也直接蓝(这个直接蓝在NT!NtRead 和 NT!NtWrite的函数上,而且就是0xc0000005的空指针类型的访问,这个为什么是必须的?) 实际情况测试中,不能采用偷懒的办法:, 例如:

for ( i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; i++)
{
DriverObject->MajorFunction[i] =  PassThrough;
}

而一定要:

DriverObject->MajorFunction[IRP_MJ_CREATE] = SpyCreateTest;
DriverObject->MajorFunction[IRP_MJ_READ] = PassThrough;
DriverObject->MajorFunction[IRP_MJ_WRITE] = PassThrough;

并且一定要设置Fast-IO的派遣例程


注意: 

WDK7600, 拷贝驱动目录,并bcz,执行,驱动无法卸载。

问题6: 驱动加载后,windbg打开,debugview打开显示文件信息比较多以后,直接卸载驱动,会有概率出现系统自己的蓝屏

说是有驱动打印时,有什么资源没有释放,所以尽量避免卸载驱动。

问题7:  ntoskrnl.lib这个DDL在VS2015下的WDK有个函数,win7上没有,但是编译上VS2015又支持win7,所以一旦编译好win7会出现,驱动无法加载成功的情况

原因是: Win7上的环境,缺少了有个函数,找不到符号表,导致加载失败,所以win7上的编译还是用WDK7600来编译,或者将WDK7600的库,拷贝出来,在VS2015工程编译win7_32的时候,通过手工来设置加载该WDK7600的库文件。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值