首页
社区
课程
招聘
帮忙测试下 磁盘卷设备过滤驱动加载方法,感谢感谢!
发表于: 2010-2-7 23:46 6051

帮忙测试下 磁盘卷设备过滤驱动加载方法,感谢感谢!

2010-2-7 23:46
6051
要把磁盘卷过滤驱动加载到卷设备之上,书中是如此操作的:
把过滤驱动sys文件放入c:\windows\system32\drivers,使用osrloader加载其为boot型驱动(服务名为DP),并按图在注册表的upfilter项上添加注册的驱动名,图上看见在DP前面还有个Volsnap驱动在那

但我用windbg跟踪后发现,系统调用 DriverEntry()之后,调用的下一个函数居然是DPReinitializationRoutine(),其DPAddDevice根本就没得到调用.
怀疑原书加载方法的正确性,故求此类过滤驱动加载方法,感谢感谢,被这个搞懵了,有朋友说书上加载方法没错,可我试了很多次,结果还是这样

有没有朋友帮个忙测试下附件的代码,看看加载之后情况是不是和我一样,感谢感谢
源代码,osrloader,编译好的sys文件都在里面,只需要加载下windbg跟踪下就好~
加载方法:
1)将过滤驱动DP.sys文件放入c:\windows\system32\drivers
2)使用osrloader加载其为boot型驱动(见附件图1)
3)修改注册表键值,在upperfilter上增加dp(见附件图2)

NTSTATUS
DriverEntry(
    IN	PDRIVER_OBJECT	DriverObject,
    IN	PUNICODE_STRING	RegistryPath
    )
{
	int i;

	//KdBreakPoint();

	for (i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; i++)
	{
		//初始化这个驱动所有的分发函数,默认值是初始化为DPDispatchAny
		DriverObject->MajorFunction[i] = DPDispatchAny;
	}
    
	//下面将我们特殊关注的分发函数重新赋值为我们自己的处理函数
    DriverObject->MajorFunction[IRP_MJ_POWER] = DPDispatchPower;
    DriverObject->MajorFunction[IRP_MJ_PNP] = DPDispatchPnp;
    DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DPDispatchDeviceControl;
    DriverObject->MajorFunction[IRP_MJ_READ] = DPDispatchReadWrite;
    DriverObject->MajorFunction[IRP_MJ_WRITE] = DPDispatchReadWrite;

	//将这个驱动的AddDevice函数初始化为DpAddDevice函数
    DriverObject->DriverExtension->AddDevice = DPAddDevice;
	//将这个驱动的unload函数初始化为DpUnload函数
    DriverObject->DriverUnload = DPUnload;
    
	//注册一个boot驱动结束回调,这个回调函数会在所有的boot型驱动都运行完毕之后再去执行
	IoRegisterBootDriverReinitialization(
		DriverObject,
		[COLOR="Red"]DPReinitializationRoutine[/COLOR],
		NULL
		);

	//作为一个过滤驱动,无论如何都要返回成功
    return STATUS_SUCCESS;
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 75
活跃值: (803)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
自己顶下
2010-2-9 16:33
0
雪    币: 93
活跃值: (365)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
已经帮你QQ解决了,问题出在注册表中的VolSnap后面不用加空格,在下一行直接填写服务名就可以了,另外.sys一定要拷贝到drivers文件夹下,否则会出现因找不到.sys而蓝屏,用OsrLoader加载的时候选择的boot启动,当重启后会加载.sys!
2010-2-9 19:11
0
雪    币: 75
活跃值: (803)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
额,太感谢楼上了,这个空格,郁闷了我太久了
2010-2-9 19:14
0
雪    币: 97
活跃值: (43)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
mark, 我正在做卸载
2011-4-6 15:43
0
雪    币: 267
活跃值: (438)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
6
原来是天书夜读<<windows内核安全与防护>>里的dp卷还原啊!那个在设置稀疏文件的函数参数是有不同版本的,自己网络上搜搜看!嘿嘿!我可是参考了他这个原理写了个没有驱动设备对象的驱动程序来动态还原磁盘数据。哪天心情好了再把源码发上去...
2011-4-13 07:14
0
游客
登录 | 注册 方可回帖
返回
//