首页
社区
课程
招聘
[分享]FileFilter文件保护
发表于: 2012-8-29 12:18 13331

[分享]FileFilter文件保护

2012-8-29 12:18
13331

一个例子,保护xp下计算器C:\WINDOWS\system32\calc.exe,不被删除,不被读写。

MiniFileFilter.rar

这是一个demo,我自己测试了下,没发现什么问题。
有兴趣的兄弟,可以搞下,呵呵。


bin.rar


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
最新回复 (27)
雪    币: 601
活跃值: (256)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
2
下载了,谢谢分享
2012-8-29 13:08
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
有问题,无法安装
2012-8-29 13:48
0
雪    币: 183
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
可以借鉴下思路,应用到自己的软件上.就不会那么随便被xxoo了
2012-8-29 15:55
0
雪    币: 253
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
碰到XUETR磁盘清0,也成屌丝,没用。
2012-8-29 21:40
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
6
又是guxinyi,我喜欢
2012-8-30 08:49
0
雪    币: 1021
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zig
7
ths for sharing........................
2012-8-30 09:17
0
雪    币: 1895
活跃值: (1622)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
2012-8-30 10:10
0
雪    币: 4817
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
是LZ太强大呢,还是我太差呢,我怎么就没看明白,不让访问文件,不让读或写,在PreCreate判断请求的访问权限即可。如果在其他地方拒绝,可能会导致问题,比如在Write的时候判断,如果是PagingIO,你拒绝了,系统就会提示缓存写入失败,何必呢。再说,如果你PreCreate都防不住,我想,在其他地方判断也是白搭。

其实可以不用XUETR磁盘清0,其实把打开操作直接发往文件系统对象,这个保护就作废了。
2012-8-30 10:49
0
雪    币: 219
活跃值: (773)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
10
我看 上楼你的金币好多啊 6792小时~~~
2012-8-30 11:31
0
雪    币: 199
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
前几天才搞过。。。
2012-8-30 11:32
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
在win7下有调试输出 但是可以读写
2012-8-30 12:30
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
13
我的哥,你想得真多。不过挺好的。感谢你的回复。
目前我在做这方面的研究,这段代码只是一个demo。
看来还是不能偷懒,需要把KasperskyPURE的驱动给解剖了。
2012-8-31 08:54
0
雪    币: 326
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
为虾米 XP SP3 编译安装,直接BSOD
2012-8-31 10:42
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
15
楼上的兄弟,吧dump文件传来看看,
2012-8-31 15:59
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
16
demo在前面。。。
2012-8-31 16:01
0
雪    币: 65
活跃值: (112)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
17
驱动层的破坏,根本呢可以不用考虑
2012-8-31 17:53
0
雪    币: 65
活跃值: (112)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
18
驱动层的破坏,根本没有考虑的价值。。。。。借用某人一句话。。。。都进内核了,还有什么不可以做的
2012-8-31 17:57
0
雪    币: 4817
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
其实我就是想告诉LZ,权限判断在PreCreate中即可,其他地方判断不仅意义不大,反而可能适得其反,其实不是说内核搞破坏的问题。只是有人提到了XUETR清零,我就说了句而已,哈哈,有冒犯的,还请见谅啊
2012-8-31 22:24
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
20
删除文件为什么要判断权限?
不解

Windows下删除文件的实现方式本质上有以下两种:
1. 使用FILE_DELETE_ON_CLOSE
   ZwCreateFile和IoCreateFile的CreateOptions 参数可以通过使用FILE_DELETE_ON_CLOSE标志来实现删除文件的功能。顾名思义,使用此标志打开的文件在关闭时会删除该文件。
   如要在文件过滤驱动中判断是否设置了FILE_DELETE_ON_CLOSE标志,只需截获IRP_MJ_CREATE请求,通过pIrpStack->Parameters.Create.Options判断即可。
2.  使用FileDispositionInformation
   这种方式需要使用Native API ZwSetInformationFile,将最后一个参数FileInformationClass设置为FileDispositionInformation即可。ZwSetInformationFile的详细用法可参见DDK。Windows API中的DeleteFile就是使用这种方式实现删除文件功能的。
   如需要在文件过滤驱动中监视这种方式的删除文件,只需监视IRP_MJ_SET_INFORMATION请求,通过判断pIrpStack->Parameters.SetFile.FileInformationClass是否为FileDispositionInformation且((PFILE_DISPOSITION_INFORMATION)Irp->AssociatedIrp.SystemBuffer)->DeleteFile是否为TRUE来判断是否是删除文件操作。
2012-9-1 10:39
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
21
在PreCreate里如何判断我随后的操作时读文件还是写文件?求解
2012-9-1 10:46
0
雪    币: 4817
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
你想想,你打开文件的时候,是不是要填写访问权限啊,比如FILE_READ_DATA,FILE_WRITE_DATA之类的,如果你只填了FILE_READ_DATA,那你试试WriteFile能否成功,剩下的,就不用我说了吧。
2012-9-1 11:33
0
雪    币: 4817
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
1,既然你知道在ZwCreateFile的时候置FILE_DELETE_ON_CLOSE标记,那在PreCreate你就能知道该打开操作是要删除文件的呀,拒绝即可。

2.请你看看WDK里关于FileDispositionInformation的说明
Usually, sets the DeleteFile member of a FILE_DISPOSITION_INFORMATION to TRUE, so the file can be deleted when ZwClose is called to release the last open handle to the file object. The caller must have opened the file with the DELETE flag set in the DesiredAccess parameter.

不用我说了吧,我说的判断权限,不是指ZwCreateFile里的DesiredAccess,而是在说,是否拒绝文件的某种操作,一般来讲,在PreCreate即可完成,因为后边的大部分动作,是需要先在ZwCreateFile请求的,如果ZwCreateFile都拒绝了,那后面的操作都没戏了
2012-9-1 11:40
0
雪    币: 3836
活跃值: (4142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
看雪要的就是这种气氛。。。。。
2012-9-1 21:36
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
25
The ZwCreateFile routine creates a new file or opens an existing file.
ZwCreateFile 只是创建或者打开一个文件。此时并不知道后续是什么操作,有可能是读文件,也有可能是写文件。

你可能会说组ZwCreateFile的参数DesiredAccess 里判断,但是如果DesiredAccess 里指定的是所有的权限,你怎么去判断?
2012-9-1 22:53
0
游客
登录 | 注册 方可回帖
返回
//