阅读:11347回复:52
基于minifilter的文件头标识文件夹加密源代码
提供的代码基于wdk提供的几个例子的组合,比较混乱,主要代码在ctxdisp.c和encrypt.c中实现,对主要例程没有实现同步处理;采用分组加密,加密采用16字节分组和固定的16字节字符异或;没有提供外部配置工具,内置了\\Device\\HarddiskVolume2\\MiniFolder\\和\\Device\\HarddiskVolume3\\MiniFolder\\作为加密文件文件夹。
只测试xp系统下桌面/winrar/office系列/记事本/写字板等软件操作,虽然测试过的软件大都能正常处理,但大量未决问题依然存在,有兴趣的朋友可以看代码内注释。 看到一些朋友询问存在的问题,大致说明下: 加头后需要在过滤驱动中改变文件偏移和隐藏文件头(不隐藏文件头,映射文件将直接获取文件头标识),导致cache和真实文件不一致以及有效长度的不一致,两者相差文件头标识长度,而文件系统在写入时会检查文件有效长度。所以在过滤驱动中必须跟踪文件有效长度,并保证有效长度和真实文件的一致性,而文件有效长度是cache和文件系统私有的,没有办法完全正确跟踪并进行处理。所以个人认为单纯文件头标识过滤驱动是无法保证正确的(可以辅助hook来实现,但64位的到来, 毕竟越来越不靠谱),建议基于过滤驱动的文件加密使用文件尾标识,最好还是采用layerfsd方式,头尾随便加。 |
|
|
沙发#
发布于:2012-01-30 16:40
很久没登录,更新附件,希望对新人有帮助
|
|