阅读:5844回复:36
关于用Filter Driver对文件进行写保护的问题
各位大虾:
小弟近来正在看FileMon的代码,想做一个Filter Driver对指定的文件进行写保护,想请问一下应用程序对文件进行写操作的时候要发哪些IRP给Driver?我应该处理哪些IRP请求呢? 如:IRP_MJ_DEVICE_CONTROL等,还有别的吗? 能否告诉一下这中间的调用过程? |
|
最新喜欢:![]()
|
沙发#
发布于:2003-06-12 15:38
我的问题怎么没有一个人回答呀?!
郁闷中。。。。。。 求各位大虾帮帮忙呀!!! |
|
|
板凳#
发布于:2003-06-12 21:50
你要做的是一个访问控制吧!在你的驱动里需要一个规则表
驱动根据规则表做事,对文件写保护当然要处理IRP_MJ_WRITE ,IRP_MJ_DEVICE_CONTROL是DeviceIoControl 函数向驱动发送控制码时的irp包。建议你先把例子看明白了。 |
|
地板#
发布于:2003-06-13 22:11
感谢newkey,song1484兄的关注!
我已经知道用SoftIce和DriveMonitor调试了,:) 但是小弟还有一个问题,每次修改源程序后,装载新的SYS,但是每次运行的都是老的,只好重新启动机器后再调试,非常耽误时间,简直把人给弄疯了。不知道两位老兄有没有什么办法。 注:装载新的SYS之前,我卸载了原来的SYS,但是好象并没有得到预期的效果。 |
|
|
地下室#
发布于:2003-06-14 10:16
由于文件系统的特性,每时每刻都有文件系统的访问,所以驱动的引用计数不可能变为0,所以无法卸载。不过如果你找到好办法,告诉我。
|
|
|
5楼#
发布于:2003-06-14 10:20
up
我也遇到相同的问题 reboot |
|
|
6楼#
发布于:2003-06-14 10:23
同意kenli79。
|
|
7楼#
发布于:2003-06-14 11:28
你要做的是一个访问控制吧!在你的驱动里需要一个规则表 这个小弟也明白,我用FileMon跟踪后发现系统写一个文件时会先后执行IRP_MJ_WRITE,IRP_MJ_SETINFORMATION等,我想如果我在IRP_MJ_WRITE里面找到当前系统处理的文件名,比较它如果是要禁止写的文件名,我就让系统返回,不让IRP向下传,不知道这样处理是否可以? 还有如果用这种方法处理,应该让系统返回什么参数呢? 希望各位大虾给点建议!感激不尽! |
|
|
8楼#
发布于:2003-06-14 13:51
各位大虾:
我试过了在IRP_MJ_WRITE中,通过比较文件名的方法,如果是我要禁止写的文件,我就让程序返回一个访问被拒绝的标志,在Notepad打开一个txt文件时是可以成功禁止写的,但是如果我用Word来打开这个txt文件却成功保存了,跟踪后发现原来Word在写文件时传入IRP_MJ_WRITE中得到的文件名根本不是txt的文件名,而是一个~WRL0003.tmp文件,天哪!看来用比较文件命的方法是不可能实现文件禁止写了。不知道哪位可以给点建议! |
|
|
9楼#
发布于:2003-06-16 09:51
你是通过什么方法得到IRP_MJ_WRITE处理的文件名的?
|
|
10楼#
发布于:2003-06-16 10:35
你是通过什么方法得到IRP_MJ_WRITE处理的文件名的? 说起来惭愧,我是用FileMon提供的那个函数。 |
|
|
11楼#
发布于:2003-06-20 14:02
用户被禁言,该主题自动屏蔽! |
|
12楼#
发布于:2003-06-20 14:23
不用reboot,只要在装置管理器中将其停用,在打开即可。但记得要选显示隐藏驱动的选项。 多谢辣,好像有道理,我去试试看! |
|
|
13楼#
发布于:2003-06-20 14:27
用户被禁言,该主题自动屏蔽! |
|
14楼#
发布于:2003-06-27 01:30
要写保护 一是不能写入,一是不能被删除,删除又分两种,一是控制不到垃圾箱(rename),二是直接删除.
|
|
15楼#
发布于:2003-07-01 18:56
不用reboot,只要在装置管理器中将其停用,在打开即可。但记得要选显示隐藏驱动的选项。
---------------------------- 请问楼上的大侠,什么是 “装置管理器” 啊 谢谢了 |
|
|
16楼#
发布于:2003-07-01 19:35
用户被禁言,该主题自动屏蔽! |
|
17楼#
发布于:2003-07-10 14:37
控制的有:IRP_MJ_CREATE,IRP_MJ_WIRTE,IRP_MJ_SET_INFORMATION这几个应该就够了,至于IRP_MJ_READ,在对文件系统的控制中,则可以不用考虑,因为控制拒绝访问的时候,用IRP_MJ_CREATE就够了,而可以访问,不能写,删除等操作则不会触发IRP_MJ_READ操作,具体的细节自己慢慢来吧,我有一个现成的已经发给你啦,注意收信哦!
|
|
|
18楼#
发布于:2003-07-10 14:40
楼上的发一份给我看看,我一直为此头痛.email:freducn2002@hotmail.com
|
|
19楼#
发布于:2003-07-10 14:43
用户被禁言,该主题自动屏蔽! |
|
上一页
下一页