我要用API HOOK 挂钩windows中所有的文件系统的操作.目的是,在用户操作某个或某些文件对象之前,必须用我的替换函数来处理一下,在所有文件在写入,保存在存贮器之前,用替换程序截获输入的数据流,做相应处理后,在存到存储器里. 我是利用Jeffrey Richter的LastMsgBoxInfo的例子的基础上修改的. 现在比较头痛的是,在windows里,文件操作有太多种,即使是同一种操作,也可能用不同的api,不同的方法来实现. 基于,我前面的目的,我想请大家帮忙的是在文件系统的API里,处理文件数据流的那一些是关键的,必须用的API? 还有就是关于截获文件数据流,还需要哪些步骤,知识!!!!>?
 希望大家参与讨论,不吝赐教啊!!!!

解决方案 »

  1.   

    FILEMON就是例子,如果有源码就好了
      

  2.   

    哥们你的title真大啊,我以为你要文件过滤驱动呢,呵呵
    你要的功能,核心编程达不到要求,他只是简单的HOOK而已,你最好写一个IFS,呵呵
      

  3.   

    参考FileMon,实现要求比较多,一步步来
      

  4.   

    FileMon在此时可能不能起作用了,可能需要结合 API 钩子和 IFS 过滤驱动
      

  5.   

    受教了.原来还需要这么多东西啊,只是APIHOOK不够用啊.那么API 钩子和 IFS 过滤驱动结合的例子或者相关代码来指点一下.
      其实,我就是给U盘做个程序,当U盘被系统认出的时候,自动运行.然后所有针对U盘上的文件进行操作,都将受到限制,尤其是拷贝等操作,截获并且简单加密,是读出的文件,不能在普通的机子上运行.  我负责的就是把操作之前截获动作,并把针对数据流进行操作.
      大家多多指教,我在一直关注着..............
      

  6.   

    首先,你要明确一下自己是不是真的要截获文件操作,还是数据操作。
    前者典型的应用例子就是文件加密解密,后者譬如磁盘保护,类似还原精灵。
    前者需要参考的例子是FileMon,它最新的源码已经不公开了,同时IFS DDK中的例子sfilter和filespy都非常好,但是不建议上来就去啃filespy,它仅仅是在sfilter的基础上作了一点包装使得更通用而已,对于学习文件操作拦截,sfilter足矣。
    后者,就不要误入歧途了,disk filter driver和file filter diiver是完全不同的东西,你应该看的例子是ddk附带的例子diskperf,此示例演示了如何进行扇区级的过滤。
    我建议你还是先搞清楚自己的定位。
      

  7.   

    如果是象你说那样,仅仅针对U盘文件进行解密,那就是要写file system filter。请看这里:
    http://community.csdn.net/Expert/topic/4093/4093567.xml?temp=.8745386