dikiili
驱动牛犊
驱动牛犊
  • 注册日期2003-06-09
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:5844回复:36

关于用Filter Driver对文件进行写保护的问题

楼主#
更多 发布于:2003-06-11 16:34
各位大虾:
小弟近来正在看FileMon的代码,想做一个Filter Driver对指定的文件进行写保护,想请问一下应用程序对文件进行写操作的时候要发哪些IRP给Driver?我应该处理哪些IRP请求呢?
如:IRP_MJ_DEVICE_CONTROL等,还有别的吗?
能否告诉一下这中间的调用过程?

最新喜欢:

slummerslumme...
我并不属于这个世界! [img]http://mini.sq.sh.cn/images/tu.gif[/img]
dikiili
驱动牛犊
驱动牛犊
  • 注册日期2003-06-09
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-12 15:38
我的问题怎么没有一个人回答呀?!
郁闷中。。。。。。
求各位大虾帮帮忙呀!!!
我并不属于这个世界! [img]http://mini.sq.sh.cn/images/tu.gif[/img]
song1484
驱动牛犊
驱动牛犊
  • 注册日期2002-12-04
  • 最后登录2005-09-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-12 21:50
你要做的是一个访问控制吧!在你的驱动里需要一个规则表
驱动根据规则表做事,对文件写保护当然要处理IRP_MJ_WRITE
,IRP_MJ_DEVICE_CONTROL是DeviceIoControl
函数向驱动发送控制码时的irp包。建议你先把例子看明白了。
dikiili
驱动牛犊
驱动牛犊
  • 注册日期2003-06-09
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-13 22:11
感谢newkey,song1484兄的关注!
我已经知道用SoftIce和DriveMonitor调试了,:)
但是小弟还有一个问题,每次修改源程序后,装载新的SYS,但是每次运行的都是老的,只好重新启动机器后再调试,非常耽误时间,简直把人给弄疯了。不知道两位老兄有没有什么办法。
注:装载新的SYS之前,我卸载了原来的SYS,但是好象并没有得到预期的效果。
我并不属于这个世界! [img]http://mini.sq.sh.cn/images/tu.gif[/img]
kenli79
驱动小牛
驱动小牛
  • 注册日期2002-06-12
  • 最后登录2003-07-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-14 10:16
由于文件系统的特性,每时每刻都有文件系统的访问,所以驱动的引用计数不可能变为0,所以无法卸载。不过如果你找到好办法,告诉我。
超级菜鸟!!!!!!!!!
newkey
驱动小牛
驱动小牛
  • 注册日期2002-10-03
  • 最后登录2013-10-13
  • 粉丝1
  • 关注0
  • 积分45分
  • 威望392点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-14 10:20
up
我也遇到相同的问题
reboot
www.xDrv.com
song1484
驱动牛犊
驱动牛犊
  • 注册日期2002-12-04
  • 最后登录2005-09-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-14 10:23
同意kenli79。
dikiili
驱动牛犊
驱动牛犊
  • 注册日期2003-06-09
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-06-14 11:28
你要做的是一个访问控制吧!在你的驱动里需要一个规则表
驱动根据规则表做事,对文件写保护当然要处理IRP_MJ_WRITE
,IRP_MJ_DEVICE_CONTROL是DeviceIoControl
函数向驱动发送控制码时的irp包。建议你先把例子看明白了。

这个小弟也明白,我用FileMon跟踪后发现系统写一个文件时会先后执行IRP_MJ_WRITE,IRP_MJ_SETINFORMATION等,我想如果我在IRP_MJ_WRITE里面找到当前系统处理的文件名,比较它如果是要禁止写的文件名,我就让系统返回,不让IRP向下传,不知道这样处理是否可以?
还有如果用这种方法处理,应该让系统返回什么参数呢?
希望各位大虾给点建议!感激不尽!
我并不属于这个世界! [img]http://mini.sq.sh.cn/images/tu.gif[/img]
dikiili
驱动牛犊
驱动牛犊
  • 注册日期2003-06-09
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-06-14 13:51
各位大虾:
我试过了在IRP_MJ_WRITE中,通过比较文件名的方法,如果是我要禁止写的文件,我就让程序返回一个访问被拒绝的标志,在Notepad打开一个txt文件时是可以成功禁止写的,但是如果我用Word来打开这个txt文件却成功保存了,跟踪后发现原来Word在写文件时传入IRP_MJ_WRITE中得到的文件名根本不是txt的文件名,而是一个~WRL0003.tmp文件,天哪!看来用比较文件命的方法是不可能实现文件禁止写了。不知道哪位可以给点建议!
我并不属于这个世界! [img]http://mini.sq.sh.cn/images/tu.gif[/img]
song1484
驱动牛犊
驱动牛犊
  • 注册日期2002-12-04
  • 最后登录2005-09-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-06-16 09:51
你是通过什么方法得到IRP_MJ_WRITE处理的文件名的?
dikiili
驱动牛犊
驱动牛犊
  • 注册日期2003-06-09
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-06-16 10:35
你是通过什么方法得到IRP_MJ_WRITE处理的文件名的?

说起来惭愧,我是用FileMon提供的那个函数。
我并不属于这个世界! [img]http://mini.sq.sh.cn/images/tu.gif[/img]
wolfwoo22
禁止发言
禁止发言
  • 注册日期2003-03-11
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分930分
  • 威望8970点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-06-20 14:02
用户被禁言,该主题自动屏蔽!
dikiili
驱动牛犊
驱动牛犊
  • 注册日期2003-06-09
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-06-20 14:23
不用reboot,只要在装置管理器中将其停用,在打开即可。但记得要选显示隐藏驱动的选项。


多谢辣,好像有道理,我去试试看!
我并不属于这个世界! [img]http://mini.sq.sh.cn/images/tu.gif[/img]
wolfwoo22
禁止发言
禁止发言
  • 注册日期2003-03-11
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分930分
  • 威望8970点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-06-20 14:27
用户被禁言,该主题自动屏蔽!
fanxf
驱动牛犊
驱动牛犊
  • 注册日期2002-12-20
  • 最后登录2006-03-14
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-06-27 01:30
要写保护 一是不能写入,一是不能被删除,删除又分两种,一是控制不到垃圾箱(rename),二是直接删除.
newkey
驱动小牛
驱动小牛
  • 注册日期2002-10-03
  • 最后登录2013-10-13
  • 粉丝1
  • 关注0
  • 积分45分
  • 威望392点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-07-01 18:56
不用reboot,只要在装置管理器中将其停用,在打开即可。但记得要选显示隐藏驱动的选项。
----------------------------

请问楼上的大侠,什么是 “装置管理器” 啊

谢谢了
www.xDrv.com
wolfwoo22
禁止发言
禁止发言
  • 注册日期2003-03-11
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分930分
  • 威望8970点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-07-01 19:35
用户被禁言,该主题自动屏蔽!
chicz
驱动牛犊
驱动牛犊
  • 注册日期2003-07-10
  • 最后登录2003-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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操作,具体的细节自己慢慢来吧,我有一个现成的已经发给你啦,注意收信哦!
痴虫子
freducn2002
驱动小牛
驱动小牛
  • 注册日期2002-06-26
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望29点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
  • 社区居民
18楼#
发布于:2003-07-10 14:40
楼上的发一份给我看看,我一直为此头痛.email:freducn2002@hotmail.com
wolfwoo22
禁止发言
禁止发言
  • 注册日期2003-03-11
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分930分
  • 威望8970点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2003-07-10 14:43
用户被禁言,该主题自动屏蔽!
上一页
游客

返回顶部