摘要
我们的作业是在Windows下编写一个文件过滤驱动程序,该文件过滤驱动可以保护某一文件或者目录,驱动可以根据权限文件的权限记录来控制用户对被保护文件的读、写、删除操作。我们的计划是先在网上收集相关的学习资料进行学习和参考,学习如何去配置环境,如何用模板来写出一个HelloWorld程序,然后再实现如何对文件的保护,一步一步地实现作业需求。花了一定时间后,我们发现了Windows的Visual Studio 2017下面的Driver:Minifilter框架(微过滤器框架),其特点是封装得比较好,适合初学者开发。我们的测试环境是VMware虚拟机+Windows7,在禁止强制签名的情况下可以安装没有数字签名的驱动。在Minifilter框架下,对不同的IRP进行相应的判断和操作可以实现对文件的保护,比如用户进入了被保护的文件,而且尝试进行写,那么就会产生IRP_MJ_WRITE信号,禁止其则可以阻止写操作。在编译工程的时候,一开始一直编译不成功(编译可以通过,但是无法运行,错误:1275),后来发现要把解决方案平台x86改成x64,然后还要改工程的两个属性,这个具体后面再讲。编译成功后,驱动可以正常运行,实现了对文件的读、写和删除的权限限制。接下来我们的工作是实现在内核中读取权限记录文件,然后在对读取的内容进行判断,如果是false则阻止,true则不阻止。但是我们发现在内核中的文件操作很容易造成蓝屏,研究了很长时间都没有解决这个问题。所以我们的开发的驱动只是完成了最基本的过滤操作,并没有完全实现功能需求。
功能需求
设计一个可以对指定文件的操作权限监管的驱动程序,且该驱动程序可以在Windows7 x64环境下运行。用户通过修改权限文件中的内容修改指定文件的操作权限,并按照用户的需求启用和卸载该驱动程序。驱动程序要求有对指定目标文件的读、写、删除权限的控制,要求能够从权限文件中读取权限。在安装该驱动程序的时候,要求用户填写用户名,密码,要保护的文件或者文件目录,然后再确定保护权限,即读、写和删除权限。安装成功后,如果有对保护文件或者文件目录的非法操作,驱动就会阻止。如果用户想更改权限或者删除该驱动程序,首先得输入用户名和密码,然后才可以更