阅读:2085回复:14
filemon拦截指定文件读写的处理,请高手指点迷津
我想改动filemon源代码实现过滤对给定文件的读或者写。
通过观察filemon的输出信息,不论是对文件进行什么操作,都先有IRP_MJ_CREATE,在其中加拦截代码我想具有可行性,看过本站的一些帖子,有说在IRP_MJ_CREATE中进行处理,加如下代码: Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; Irp->IoStatus.Information = 0; IoCompleteRequest( Irp,IO_NO_INCREMENT); return STATUS_INVALID_DEVICE_REQUEST; 的确可以拦截,但是所有的读写操作都拦截了,如果我需要只让读不让写怎么办?在IRP_MJ_WRITE里面加如这些代码经试验不行,会出现大量不能去除的错误提示。 问: 1、如果在IRP_MJ_CREATE中进行处理中进行处理,因为读写都先有这个,如何知道该IRP_MJ_CREATE是读还是写的时候产生的? 2、如果分别在IRP_MJ_READ和IRP_MJ_WRITE中处理,照上面加代码好像不行,应该怎样处理?返回什么值? :) :( |
|
最新喜欢:![]() |
沙发#
发布于:2004-08-06 23:55
经过一番瞎折腾,还是不行,还是有问题:
1、excel只读就不能打开 2、access数据库过滤除MSACCESS外的其它所有操作,打开和关闭以及保存时都有 延缓写入错误,无法为D:文件保存数据。。。但是数据时保存了的,很烦人的错误提醒。取消规则后正常 请DX指点指点啊 ,word不让查询信息就可以了:,为什么数据库有这个mad: [编辑 - 8/11/04 by birdtomaster] |
|
板凳#
发布于:2004-08-05 17:31
用我的siimon.sys吧,已经实现了你要的功能. 给大家看看你的代码吧!!! |
|
地板#
发布于:2004-08-04 11:24
兄弟能不能给我一个,我自己在瞎搞,刚开始
是重启 ,现在可惨了,每天开机要启三次,才能 进去,前两次是预启动,现在吓的都不敢试了. 俺的小妹:yearnyean@hotmail.com |
|
地下室#
发布于:2004-08-03 15:03
我也想要一份 谢了
djhunter@eyou.com |
|
5楼#
发布于:2004-08-03 10:06
还有这好事?
我也要 freecutelei@tom.com |
|
6楼#
发布于:2004-08-02 17:17
用我的siimon.sys吧,已经实现了你要的功能. 从哪里可以获得你的siimon.sys的代码,能发给我一份否?zhmxggg@126.com,多谢了 |
|
7楼#
发布于:2004-08-02 08:57
用我的siimon.sys吧,已经实现了你要的功能.
|
|
8楼#
发布于:2004-08-01 18:49
完了完了,拦截倒是可以,为何改变过滤规则不拦截后,word文件不能打开,说文件被锁定???
|
|
9楼#
发布于:2004-07-27 00:04
所有文件的写入都会到这个入口,一些通过fastio写入的将在后来的某个时候有laszy writer系统线程延迟写入,
|
|
|
10楼#
发布于:2004-07-23 11:57
准确说是2问可以拦截,1问还不行,网上有位兄弟的代码我拿去试出了问题,但是思路很好这样就可以都在CREATE中拦截了,可能是我自己的问题,以后再试,是这个帖子的回复:
IRP_MJ_WRITE的问题,请各位DX赐教,不胜感激!!!!!!!! |
|
11楼#
发布于:2004-07-23 11:51
详细说说你是如何做的???? 就是在多个有关的IRP_MJ_...中都加入了第一问的4个语句,word也可以实现拦截读或者写,读在CREATE中就过滤,只拦截写在多处设置过滤+条件,但是写没有在CREATE中,就是有CREATE但是没有以后,不知会否出错,我试过长期运行,超短期使没有问题的 |
|
12楼#
发布于:2004-07-19 08:56
详细说说你是如何做的????
|
|
|
13楼#
发布于:2004-07-17 19:10
已经解决此问题,是设置判断标志后没有在下次判断时改回来,并在非read和write的其它fuction中也加了代码,不知对不对,只是现在word文档不行
|
|
14楼#
发布于:2004-07-17 17:11
在IRP_MJ_WRITE里面加入这些代码大量不能去除的错误提示为:windows延缓写入错误:windows无法为D:文件(还有其它的文件,D:文件其实是D:盘)保存所有数据。。。。是不是应该返回其它值?还是因为先的create有什么要写入缓冲,但是怎么是D:呢,请各位老大帮帮忙
|
|