阅读:1640回复:7
求教FileMon问题
我是由于项目原因,刚刚学习文件驱动开发的新手。
现在在FileMon中碰到这样一个问题。 浏览了所有帖子都没有答案 Filemon在运行中能检测到IRP_MJ_Write,但几乎不输出IRP_MJ_Read. 取而代之比较多的是IRP_MJ_FILE_SYSTEM_CONTROL? 请各位大侠赐教。 我要做的是指定文件自动解密,如果不能接受到IRP_MJ_READ,那么应该在什么地方对数据进行解密处理?? |
|
沙发#
发布于:2004-06-09 09:06
检查你的过滤器
我的READ比天上的星星还要多 |
|
|
板凳#
发布于:2004-06-09 10:09
谢谢对新手的帮助
我刚才装了FileMon的V6的确可以捕捉到read,象星星一样, 可是只有4才有源码,在4里面还是没有星星 星星啊星星你在哪里。 请大家继续帮助,我在论坛看到一些帖子也描述过这些情况,但最后解决了也没有贴出原因,能否以后把解决原因贴出,让帖子真正能起到帮助左右。 我的系统是xp filemon是4.03版本 几乎截获不到read消息。 在本地重新编译后也是一样。(会不会是防病毒的实时监控读的IRP) 能否指点一下可能的问题(过滤器是Filemon的)我自己去找答案,尝试 再次谢谢 [编辑 - 6/9/04 by anders.xie] |
|
地板#
发布于:2004-06-09 12:23
自己回复
是版本问题 在4.34版本中该错误被修正 请大家以后用filemon源码不要用低版本 (我的建议)以后大家找到了问题解决方案,也要回一下帖子,这样就有一个知识库的作用 因为我是搞过程管理和项目管理的,对这方面比较熟悉,所以建议一下。 |
|
地下室#
发布于:2004-06-10 13:10
好的
你把修改的那里的代码也发出来 |
|
|
5楼#
发布于:2004-06-10 13:14
并没有修改
只是换了新版本的filemon 再请教一个问题 收到IPR_MJ_READ时,应该还没有读取数据 如果我要对读取的数据进行操作是不是应该在IoSetCompletionRoutine()设置处理完的回调函数?在回调函数中处理数据? [编辑 - 6/10/04 by anders.xie] |
|
6楼#
发布于:2004-06-10 19:37
帮你顶一下
|
|
7楼#
发布于:2004-06-10 20:46
自己回复
在IoSetCompletionRoutine()里面设置的回调函数可以通过IRP拿到MDA的缓存 只要在IRP_MJ_READ后判断是否需要加密,在作为参数传给自己的回调函数即可,我自己封装了一个struct第一项是filemon本来的seq,后面是是否需要解密,在接到IRP_MJ_READ后必须要判断是否是nonpaged的,是才能解密。 新的问题为,如果用户已经读取文件,那么文件一般在缓存中,如果后来才运行解密程序,那么已经来不及解密,是否有办法对系统缓存解密,还是fulsh一把? 考虑到flush影响效率,还是最好能得到缓存地址:) 系统缓存解密目前考虑下来有两个可能的地方,1是FastIORead,2是不是Nonpaged的IRP_MJ_READ 请各位高手指点 [编辑 - 6/11/04 by anders.xie] |
|