anders.xie
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2004-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1640回复:7

求教FileMon问题

楼主#
更多 发布于:2004-06-08 23:47
我是由于项目原因,刚刚学习文件驱动开发的新手。

现在在FileMon中碰到这样一个问题。
浏览了所有帖子都没有答案

Filemon在运行中能检测到IRP_MJ_Write,但几乎不输出IRP_MJ_Read.
取而代之比较多的是IRP_MJ_FILE_SYSTEM_CONTROL?
请各位大侠赐教。

我要做的是指定文件自动解密,如果不能接受到IRP_MJ_READ,那么应该在什么地方对数据进行解密处理??
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-09 09:06
检查你的过滤器
我的READ比天上的星星还要多
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
anders.xie
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2004-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-09 10:09
谢谢对新手的帮助

我刚才装了FileMon的V6的确可以捕捉到read,象星星一样,

可是只有4才有源码,在4里面还是没有星星
星星啊星星你在哪里。

请大家继续帮助,我在论坛看到一些帖子也描述过这些情况,但最后解决了也没有贴出原因,能否以后把解决原因贴出,让帖子真正能起到帮助左右。

我的系统是xp
filemon是4.03版本

几乎截获不到read消息。

在本地重新编译后也是一样。(会不会是防病毒的实时监控读的IRP)

能否指点一下可能的问题(过滤器是Filemon的)我自己去找答案,尝试

再次谢谢

[编辑 -  6/9/04 by  anders.xie]
anders.xie
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2004-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-09 12:23
自己回复

是版本问题

在4.34版本中该错误被修正
请大家以后用filemon源码不要用低版本

(我的建议)以后大家找到了问题解决方案,也要回一下帖子,这样就有一个知识库的作用

因为我是搞过程管理和项目管理的,对这方面比较熟悉,所以建议一下。
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-10 13:10
好的
你把修改的那里的代码也发出来
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
anders.xie
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2004-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-10 13:14
并没有修改

只是换了新版本的filemon

再请教一个问题

收到IPR_MJ_READ时,应该还没有读取数据

如果我要对读取的数据进行操作是不是应该在IoSetCompletionRoutine()设置处理完的回调函数?在回调函数中处理数据?

[编辑 -  6/10/04 by  anders.xie]
pursuer_zhao
驱动牛犊
驱动牛犊
  • 注册日期2003-10-23
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-10 19:37
帮你顶一下
anders.xie
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2004-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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]
游客

返回顶部