阅读:7892回复:24
用Minifilter架构 写了一个文件加密驱动
这段时间研究文件过滤驱动,经过几个月来的努力,终于写成了一个驱动,非常感谢本网站上的大虾,帮我解决了很多问题。今天写这个帖子,也想跟大家分享一下。
我主要参考了这些网页: http://bbs.driverdevelop.com/htm_data/39/0904/116386.html http://bbs.driverdevelop.com/read.php?tid-113072-keyword-word.html http://bbs.driverdevelop.com/read.php?tid=112076 这个驱动实现的功能是:对满足过滤条件的文件,如果发生了写操作调用(如文件拷贝)并没有加密过,则对其进行加密,对已加密过的文件,如果发生了读操作(如打开),则对其进行解密,使用户看到的文件正确无误,这样就可以达到防拷贝的目的。加密算法AES。 采用过滤文件后缀名的方式,过滤后缀名为.c;.h;.cpp;.txt;.doc;.ppt;0000;.xls;.pst;.jpg;.pdf;.rtf;.tmp;.docm;.docx;.pptx;.xlsx;.jpeg;.accdb。0000是用于过滤EXCEL文件时使用的,因为EXCEL文件产生的临时文件没有后缀名,而是一串十六进制数据,对满足过滤条件的文件自动加密,但不会对系统文件及Windows文件夹里的文件进行加解密。 写完后有以下感想: 1. 加密信息是写入文件尾,但的确这并不是一个好方法,虽然实现起来逻辑要简单一些,不过这并不意味着这是件简单的事,因为Office文件的长度变来变去,我只在Office 2007这个版本上作了测试,其他版本是不是也有与之相同的表现就不知道了;而且如果要加密其他类型的文件,而这些类型的文件如果也像Office文件的话,那么又得修改源代码了,虽然上述功能实现了,不过我还是觉得把加密信息写到文件头是要好一些。 2. 我是采用的过滤文件后缀名的方式,而这种方式的确有些问题,对Office这类文件就行不通,因为它们都会利用一些tmp文件来保存临时信息,写完数据后再把临时文件改名成原文件名,所以如果过滤后缀名,只过滤到原文件,则不会产生效果。而且Word PPT的临时文件是.tmp,而EXCEL的临时文件则没有后缀名(是一串通十六进制数据),所以我想通过过滤文件后缀名的方式也有很大局限性,应该与进程信息结合起来。 3. TXT这类文件最简单,如果要写文件过滤驱动的话,应先测试它,待它测试成功后,再对其他类型文件进行测试。 我目前只测试了TXT,DOC, EXCEL和PPT类型的文件,由于所涉及到的文件类型太多,所以我想把可执行程序放上来给大家用用,看看还有哪些问题。如果您使用后发现了某个问题,请您告诉我,谢谢。也可发到我邮箱里: wlcscu@163.com 附上驱动及安装文件。 另外测试时应注意: 注意事项: 1. 文件长度大小不同,可能会有不同的结果,目前我只测试过29 Bytes左右文件和4k-2Bytes左右文件,由于1M-3Bytes左右的数据没办法从外面主机直接拷贝到虚拟机上,所以没有测试,在理论上讲它应该与4k-2Bytes数据文件的表现相似; 2. 不同的操作顺序对测试结果也有影响,如新建一个文件,在文件里写入数据后再关闭与新建文件,再打开另一文件,关闭此文件,然后再在新建文件里写入数据,这两种操作也会有所不同(因为第一种操作鼠标焦点在新建文件上,而第二种操作鼠标焦点会在打开的文件上) 3. 由于Windows操作系统的预读机制,即当鼠标聚焦在文件时,会预读该文件,而鼠标究竟聚焦在哪个文件上,难于控制,所以对文件的操作最好是要么驱动加载后服务进行的环境下,要么是在驱动服务停止的环境下(即是说文件操作时,最好不要net stop filterdemo/net start filterdemo,而最好是在开机时才运行这两个命令之一,并在关机前不再运行这两个命令) |
|
最新喜欢:daniel... |
沙发#
发布于:2010-03-08 17:55
先顶个,看看
|
|
|
板凳#
发布于:2010-03-08 18:53
怎么只有驱动的?
|
|
地板#
发布于:2010-03-08 19:27
估计没人会帮你免费测试吧,,下了去各种IDA,各种OOXX~~~~
|
|
地下室#
发布于:2010-03-09 16:10
看看,学习学习,咯咯!
|
|
5楼#
发布于:2010-03-10 16:15
楼主能给份源码吗 实在感谢啊 wangyangwla@sina.com
|
|
6楼#
发布于:2010-03-29 10:57
楼主能给份源码吗?dongn0905@126.com
|
|
7楼#
发布于:2010-03-29 14:53
, 怎么都没人帮我测测看呀!
|
|
8楼#
发布于:2010-04-14 22:11
楼主能给分源码学习一下吗?usacoward@gmail.com
|
|
9楼#
发布于:2010-04-15 15:30
楼主能给分源码学习学习吗?alexandkcc@yahoo.com.hk
|
|
10楼#
发布于:2010-04-15 17:18
|
|
11楼#
发布于:2010-04-15 21:05
顶楼主
|
|
12楼#
发布于:2010-04-19 13:17
回 楼主(wlcscu) 的帖子
怎么测试?安装了就可以测试了吗? |
|
13楼#
发布于:2010-04-19 16:08
先mark,有空研究下,谢谢楼主了!
|
|
|
14楼#
发布于:2010-05-03 10:47
楼主 能否给份源码啊 liumd1027@163.com
|
|
15楼#
发布于:2010-05-11 15:21
楼主能给分源码学习学习吗?yinwei7788@yahoo.com.cn
|
|
16楼#
发布于:2010-08-27 10:07
几条经验总结不错!
|
|
|
17楼#
发布于:2010-09-08 11:16
楼主能给分源码学习学习吗?353807973@qq.com
|
|
18楼#
发布于:2010-09-27 17:34
楼主能给源码吗?licyong@yeah.net
|
|
|
19楼#
发布于:2010-10-23 17:16
ding,yige kankan la.......
|
|
上一页
下一页