阅读:2755回复:13
NTFS下文件过滤驱动加密点判断条件
我看了各位前辈的贴子,说在sfWrite和sfRead判断时候只需要判断Irp->Flags为IRP_NOCACHE | IRP_PAGING_IO | IRP_SYNCHRONOUS_PAGING_IO这三种情况.FAT32下一切正常.
但在NTFS下 sfRead是正确的,但sfWrite不正确,产生的IRP都是IRP_DEFER_IO_COMPLETION类的. 请问各位大牛碰到过这种情况吗.这个问题困扰我两星期了,如果有谁能给予帮助,将不胜感激,也可以付出一定的经济感谢.我的电子邮件是 xmzhou@hfzs.net. BTW,我现在控制的是WORD和EXCEL的读写加密. |
|
沙发#
发布于:2007-03-28 14:21
没有人碰到相同的问题吗,如果有解答的话,将不胜感激.
|
|
板凳#
发布于:2007-03-28 15:58
确实只需要判断Irp->Flags为IRP_NOCACHE | IRP_PAGING_IO | IRP_SYNCHRONOUS_PAGING_IO这三种情况,我做的也是word和excel加密,应该是你的write函数有问题,我的在ntfs下没问题,fat32我还没试过,
多看看以前的帖子 |
|
地板#
发布于:2007-04-04 18:13
感谢楼上的回复.我现在WORD在NTFS下是没有问题了,可EXCEL在NTFS下仍然只能得到IRP_DEFER_IO_COMPLETION的写请求.哎,继续摸索.
|
|
地下室#
发布于:2007-04-05 08:56
只处理IRP_NOCACHE | IRP_PAGING_IO | IRP_SYNCHRONOUS_PAGING_IO肯定没有问题,
你不用管IRP_DEFER_IO_COMPLETION,最终系统肯定会产生迟延写动作,IRP标志肯定是 IRP_NOCACHE,IRP_PAGING_IO,IRP_SYNCHRONOUS_PAGING_IO 这三种组合其一。 |
|
|
5楼#
发布于:2007-04-05 09:35
引用第4楼devia于2007-04-05 08:56发表的“”: 谢谢你的回复.我还想询问一下细节.延迟写后产生的IRP是在原来的FileObject上产生的,还是重新创建了一个不同的FileObject,如果是重新创建的,那是由哪个进程创建的. |
|
6楼#
发布于:2007-04-05 10:09
对于加解密来说你关心的是FILE,而不是FILE INSTANCE
|
|
|
7楼#
发布于:2007-04-05 11:09
引用第6楼devia于2007-04-05 10:09发表的“”: 是这样的,我的要求可能和你们的不太相同.我是只对特定的应用程序的读写操作进行加解密. 比如说WORD或者EXCEL,这样就必须知道是哪个应用程序在操作文件,所以我关心的是 FILE INSTANCE |
|
8楼#
发布于:2007-04-05 13:22
这种应用是有问题的,比如说:1.DOC对A.EXE是需要解密的,而对B.EXE是不需要解密的,
那么当1.DOC被A.EXE打开的时候,1.DOC会被CACHED,且为明文,如果后续B.EXE也 尝试打开1.DOC,那么得到的极有可能是CACHE中的明文。 |
|
|
9楼#
发布于:2007-04-05 13:52
引用第8楼devia于2007-04-05 13:22发表的“”: 我现在的处理是在IRP_MJ_CLOSE事件中清除CACHE内容. |
|
10楼#
发布于:2007-04-10 10:04
再顶一下.期待各位大牛给予帮助
|
|
11楼#
发布于:2009-07-21 10:51
先收藏了
|
|
12楼#
发布于:2009-08-13 10:50
回 楼主(xmzhou_98) 的帖子
楼主,刚看到这个帖子,我现在也正在研究文件透明加密,并且需求与你的一样,现在对记事本操作很正常,office类的文档却总有问题,花了好几周时间也没解决掉,麻烦楼主能给予指导指导,小妹在此感激不尽,谢谢!我QQ532521827 |
|
13楼#
发布于:2009-10-09 17:33
请问各位大牛:
文件过滤驱动在对记事本进行透明加解密时,根本过滤不到读请求,其采用的是文件映射的方式访问文件。 那么,清缓存、读请求时解密这两点是怎样实现呢? 非常感谢。 |
|