找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5212|回复: 4

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

[复制链接]

3

主题

36

回帖

1

精华

铂金会员

积分
2532
发表于 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。

CopyFileNameList.rar

1.57 KB, 下载次数: 2

售价: 1 水晶币  [记录]

附上驱动力链表的一些基本操作的函数基本

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2015-3-31 11:32:51 | 显示全部楼层
SFILTER基本没用过,一般来说用MiniFilter。

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

0

主题

55

回帖

0

精华

铜牌会员

积分
177
发表于 2015-3-31 13:59:13 | 显示全部楼层
系统拷贝文件时
irpSp->Parameters.QueryFile.FileInformationClass == FileEaInformation

2

主题

38

回帖

1

精华

铂金会员

积分
1395
发表于 2015-5-2 19:02:56 | 显示全部楼层
文件拷贝在每个系统实现都不一样,UAC之后微软加入了安全机制拷贝文件时会坚持安全性,ring3做比较合适,关键监控的粒度

30

主题

693

回帖

0

精华

钻石会员

积分
2815
发表于 2015-5-10 14:24:53 | 显示全部楼层
很好谢谢学习一下
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表