TouDaiMa 发表于 2015-3-31 11:15:44

文件过滤驱动获取原路径和目的路径的方法

直接说方法,大家有更好的方法,可以讨论一下。(本文采用sfilter的框架)
1、在历程SfQueryInfomation中拦截irpSp->Parameters.QueryFile.FileInformationClass == FileEaInformation,说明是有拷贝操作,这边可以拦截到拷贝的原文件的路径,然后记录到自己创建的链表g_CopyFileNameList中;
2、在SfCreate中拦截所有创建文件的操作,然后判断文件路径里的文件名是否在链表g_CopyFileNameList中(PS:通过文件名去搜索文件的原路径),如果查找到的话,就认为匹配成功,并且将节点从链表g_CopyFileNameList中删除;
3、由于WIN7操作系统下是先创建文件,然后再调用SfQueryInfomation(XP和WIN8是先SfQueryInfomation,再创建文件,不知道微软为什么要这样。。。),所以在SFClose例程中,也进行与SfCreate一样的操作。
4、由于可能会有其他操作导致g_CopyFileNameList链表一直增大,所以定时清理链表g_CopyFileNameList。

Tesla.Angela 发表于 2015-3-31 11:32:51

SFILTER基本没用过,一般来说用MiniFilter。

不过MiniFilter取路径的话,也不是直接用FltGetFileInformation这么简单。。。

renminbi 发表于 2015-3-31 13:59:13

系统拷贝文件时
irpSp->Parameters.QueryFile.FileInformationClass == FileEaInformation

bboyiori 发表于 2015-5-2 19:02:56

文件拷贝在每个系统实现都不一样,UAC之后微软加入了安全机制拷贝文件时会坚持安全性,ring3做比较合适,关键监控的粒度

upring 发表于 2015-5-10 14:24:53

很好谢谢学习一下
页: [1]
查看完整版本: 文件过滤驱动获取原路径和目的路径的方法