阅读:3306回复:17
动态加密文件
我加密文件时只能加密小于64K的文件,当大于64K时里,除了第一次是在WRITE里外,其他在在FASTIOWRITE里,当我在FASTIOWRITE里,不能改变BUFFER里的内容,说是缺页了,希望高人指点指点.
|
|
|
沙发#
发布于:2004-08-16 13:13
这种问题讨论得已经够多了,就是只在Page Io Write里边加密,无论如何最后数据肯定通过这个途径写到硬盘上。
我想不通你去关心FastIoXXX()例程干什么? |
|
板凳#
发布于:2004-08-16 16:12
我发现大于64K时就不管用了,进到了FASTIOWRITE里
希望大家指点 |
|
|
地板#
发布于:2004-08-16 18:49
我发现大于64K时就不管用了,进到了FASTIOWRITE里 我上面不是已经说了吗?“最终”肯定会通过Page IO Write写数据到硬盘上,也就是说即使现在数据暂时经过FastIOWrite,以后System进程还是再次发送Page Io Write写请求。所以只要你截获了Page Io Write,数据肯定漏不了。 |
|
地下室#
发布于:2004-08-16 23:34
[quote] 我发现大于64K时就不管用了,进到了FASTIOWRITE里 我上面不是已经说了吗?“最终”肯定会通过Page IO Write写数据到硬盘上,也就是说即使现在数据暂时经过FastIOWrite,以后System进程还是再次发送Page Io Write写请求。所以只要你截获了Page Io Write,数据肯定漏不了。 [/quote] |
|
5楼#
发布于:2004-08-18 11:50
我给出我调试的过程:
我加密114K的文件, 第一次是进到IRP_MJ_WRITE里,Irp->UserBuffer 指针有效,进程名为Explorer.exe 加密大小为64K,偏移为0 第二次是进到FASTIOWRITE里,处理剩下的, 第三次又进到IRP_MJ_WRITE里,Irp->MdlAddress 指针有效,进程名为System.exe,大小为64K,偏移为0 第四次又进到IRP_MJ_WRITE里,Irp->MdlAddress 指针有效,进程名为System.exe,大小为64K,偏移为64K 我就搞不懂为何出现如此的情形呢? 我是对移动盘进行加密, 我发现不能对原来的缓冲区操作,这时系统会说缺页错误 希望大家提题意见,要分是多的是,要多少有多少! 同时也交些同行做朋友嘛! |
|
|
6楼#
发布于:2004-08-18 12:32
老兄,我真觉得你有点幽默。
我认为我的话说得够清楚了,是截获“PAGE IO WRITE”,而不是简单的截获IRP_MJ_WRITE。IRP_MJ_WIRTE也分为缓存和非缓存两种可能,我们只能处理“PAGE IO WRITE”这种类型。 你不要怪人家不理你,因为这种问题在以前讨论得非常多了,查询一下coolice的回复,仔细看看他是怎么说的。 -> 勤用搜索,先搜再问。 |
|
7楼#
发布于:2004-08-18 13:03
slwqw
我在前已判断了Irp->Flags&IRP_NOCACHE, 不管整样我是把IRP_MJ_WRITE里的操作都加密了 但现在结果是没有被加密 我觉得是向下调用时出错了, 你能解释下我所遇到的现象吗? 整样给你分? |
|
|
8楼#
发布于:2004-08-23 15:50
嘿嘿,大哥真有意思。
上面都说截取的应该是“Paging IO” 你非要说已经截取了“NOCACHE IO” 你把“Irp->Flags&IRP_NOCACHE”加上 “Irp->Flags&(IRP_PAGING_IO | IRP_NOCACHE | IRP_SYNCHRONOUS_PAGING_IO)” 再试试看:) |
|
|
9楼#
发布于:2004-08-24 10:22
zhangc98
你好! 我加了! 现在好像好了! 整样动态的解密呢? |
|
|
10楼#
发布于:2004-08-24 12:29
解密逆过来,不就行了吗?
|
|
11楼#
发布于:2004-08-24 16:14
大家好!
我整样对系统盘进行加密而不影响操作系统的使用呢? |
|
|
12楼#
发布于:2004-08-24 16:37
大家好! 有难度. |
|
13楼#
发布于:2004-08-30 19:39
除非你把所有系统文件都过滤掉,
或者把系统盘原始的所有文件全都加密一次, 然后用到的时候解密,不过好像系统启动时用的那些 文件是在你的驱动还没有加载之前读出的, 这样还是很麻烦,总之难度比较大:)呵呵:) |
|
|
14楼#
发布于:2005-08-08 12:05
下面是引用trent于2004-08-16 09:36发表的动态加密文件: 我遇到了同样的问题,只能加密小于64K的文件,而且也是处理“Irp->Flags&(IRP_PAGING_IO | IRP_NOCACHE | IRP_SYNCHRONOUS_PAGING_IO)” 的了 请问trent:您是如何解决的? |
|
15楼#
发布于:2005-08-08 15:03
系统盘之外的整盘加密是可以实现的,这个我做过,很简单,而且不用在文件层
|
|
16楼#
发布于:2005-08-08 16:30
能否说一下思路
|
|
|
17楼#
发布于:2005-08-10 09:14
我的问题解决了,我把SfClose中的函数 CcPurgeCacheSection()去掉就没问题了。
|
|