fancylf
驱动牛犊
驱动牛犊
  • 注册日期2007-07-29
  • 最后登录2016-06-21
  • 粉丝1
  • 关注0
  • 积分61分
  • 威望501点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:2001回复:9

关于文件复制的拦截问题

楼主#
更多 发布于:2008-10-25 19:10
在内核态下,文件的复制是一些类IRP请求的组合,
如果我要拦截文件复制操作,让某一个文件不能被复制到其他目录下,
不知道该怎么拦截才可以呢
谢谢各位大虾指点!
llg84
驱动牛犊
驱动牛犊
  • 注册日期2007-10-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望55点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-10-27 15:14
只要能完整的读这个文件,就没办法阻止复制吧
looksail
荣誉会员
荣誉会员
  • 注册日期2005-05-22
  • 最后登录2014-03-15
  • 粉丝2
  • 关注0
  • 积分1016分
  • 威望991点
  • 贡献值0点
  • 好评度239点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-10-29 01:59
老话题了,应用层Hook吧,但是只要能读就能复制,没意义
提问归提问,还是只能靠自己
fancylf
驱动牛犊
驱动牛犊
  • 注册日期2007-07-29
  • 最后登录2016-06-21
  • 粉丝1
  • 关注0
  • 积分61分
  • 威望501点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2008-11-03 19:59
终于用过滤的方法完成复制的拦截了,
看来自己的问题还是要自己解决啊!
自力更生啊!
谢谢各位 大哥了!
x-star
驱动小牛
驱动小牛
  • 注册日期2007-04-26
  • 最后登录2018-11-17
  • 粉丝0
  • 关注0
  • 积分65分
  • 威望664点
  • 贡献值1点
  • 好评度39点
  • 原创分1分
  • 专家分1分
  • 社区居民
地下室#
发布于:2008-11-04 10:44
你不会是禁止读吧
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
5楼#
发布于:2008-11-05 01:15
你怎么知道文件是在复制而不是在读?
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
mz_suya
驱动小牛
驱动小牛
  • 注册日期2008-06-13
  • 最后登录2010-08-01
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望648点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分1分
6楼#
发布于:2008-11-05 13:44
某些程序操作文件就肯定是复制,某些操作肯定就是打开读
如果区分好这些程序 用黑白名单  那么就可以实现拦截复制。
甚至简单的复制 粘贴文件,因为要创建的文件的名字是 原先监控的名字或者“复件***.***"所以这样的复制也可以
但是如果我复制一个excel粘贴到word里面呢?驱动里面就不是很好实现了吧 (因为自己没有做这些所以全凭猜测说的,如果有好的办法欢迎告诉我)
fancylf
驱动牛犊
驱动牛犊
  • 注册日期2007-07-29
  • 最后登录2016-06-21
  • 粉丝1
  • 关注0
  • 积分61分
  • 威望501点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2008-11-06 10:32
mz_suya 说的甚是有道理,看来,还要再研究研究了啊!
谢谢了啊!
fancylf
驱动牛犊
驱动牛犊
  • 注册日期2007-07-29
  • 最后登录2016-06-21
  • 粉丝1
  • 关注0
  • 积分61分
  • 威望501点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2008-11-06 10:34
引用第4楼x-star于2008-11-04 10:44发表的  :
你不会是禁止读吧

我也不是很确定是否完全正确,只是根据测试结果来看,可以达到目的:
主要思路如下:
我复制文件时,观察filemon里面,在IRP_MJ_QUERY_INFORMATION请求中
irpSp->Parameters.QueryFile.FileInformationClass的值是FileEaInformation
注意这个IRP_MJ_QUERY_INFORMATION,是针对要复制的文件发出来,这个时候把被复制的文件名记录下来,而在该请求完后,便立刻对对目标文件进行写操作,也就是会对目标文件发一个IRP_MJ_WRITE,在这个请求中获得复制到的目标文件中的全路径文件名,判断该文件名中是否包含刚才复制的那个文件名,如果含有,我这里就判断是刚才那个复制的文件拷贝过来的,我这时候,让
                    Irp->IoStatus.Status=STATUS_ACCESS_DENIED;
返回失败,就可以让整个复制过程失败,
如果有问题,欢迎大家指出,谢谢!
looksail
荣誉会员
荣誉会员
  • 注册日期2005-05-22
  • 最后登录2014-03-15
  • 粉丝2
  • 关注0
  • 积分1016分
  • 威望991点
  • 贡献值0点
  • 好评度239点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2008-11-06 13:42
哈哈,只要能读就能复制,没意义的

你可以这么干,用UltraEdit打开那个要复制的文件,然后另存为另一个文件,实际上和复制没有任何区别

这只是最简单的一个方法
提问归提问,还是只能靠自己
游客

返回顶部