阅读:3836回复:15
读解密问题?请vcmfc等各位大大进来看看
翻看了版上的一些贴子,已经讨论的比较多了,可是有些问题还是没有搞明白,请各位大大再帮帮忙
做加解密FILTER,先用notepad和*.txt作为测试目标,基本的操作都已经完成了,可是还留下一个问题: 当用notepad把明文读出来后,明文就一直存在缓冲里了,其他程序读时也能看到明文,也能把明文拷贝出去了,而我们暂时确无能为力,请问大大我应该怎么把这个缓冲里的内容冲掉,或者把这个缓冲DEL了。 用 CcFlushCache MmFlushImageSection CcPurgeCacheSection 好象能把缓冲去掉,可是我找不到在那做这个操作合适 而且对notepad的IRP_MJ_CREATE,IRP_MJ_READ,IRP_MJ_WRITE调用CcIsFileCached都返回是false notepad是用内存映射的方式读写的吗?这种方式到最后是都变成pading io的方式吗?这个pading io是由那个进程发出的呢?explorer??system?? 我都蒙了,请各位大大一定要帮帮忙 |
|
沙发#
发布于:2004-06-12 23:14
哎,VCMFC好象已经退出了,现在感觉这里以前的高手都不在了,就是我们这些人了:)
NotePad确实挺奇怪的,打开文件时看不到读文件的内容,既IRP_MJ_READ,但写都正常,而且确实用了某种缓冲机制,因为比如用资源管理器打开某个文件夹时,或选中这个文件时,就已经发生了READ,你可以挂个FsFilter试试,将里面的FastIo和读写有关的例程的返回值直接设成FALSE,绕过FastIo看看,可能可以 |
|
板凳#
发布于:2004-06-13 07:59
关注!我有同样的问题。
Windows的缓存机制真是讨厌!写入硬盘好像也不是一下写入的。 |
|
地板#
发布于:2004-06-13 08:01
还有就是请问楼主,你是怎么区分文件是否已被加密?
|
|
地下室#
发布于:2004-06-13 10:12
to xxcat1220
你的方法我之前已经试过了,不行,notepad应该用的是内存映射的方式来读写的,但是最终都应该转成PAGING IO,可是为什么只有写正常读不正常呢,我就搞不懂了 |
|
5楼#
发布于:2004-06-13 10:15
to satanli1982
写入问题可以用FlushFileBuffers强行写,我现在是放在一个特定的文件夹里面做的,所有里面的文件写加密,读解密 |
|
6楼#
发布于:2004-06-13 17:32
同样的问题开了几个主题,why?
|
|
|
7楼#
发布于:2004-06-13 17:33
时间对你不重要吗?
但对很多人是很重要的 |
|
|
8楼#
发布于:2004-06-14 13:23
大哥,这是误操作,我在另一个主题里面已经解释了,也请斑竹去删了
无论如何,如果对您带来任何不便请您见晾!我在这向您道歉!! |
|
9楼#
发布于:2004-06-14 20:44
http://podgoretsky.pri.ee/ftp/Docs/Microsoft/NTFSDrv/Chapter8.pdf
里面对缓存清空讲得很清楚 |
|
10楼#
发布于:2004-06-14 23:11
再来以CcPurgeCacheSection为例详细讲解(经测试notepad可用)
case IRP_MJ_CLOSE: if(TRUE == StrCmpNocase("C:\\testDDK\\test.log",fullPathName)) { CcPurgeCacheSection(FileObject->SectionObjectPointer,NULL,0,TRUE); } StrCmpNocase是自己写的字符串不分大小写高效比较函数。从匹配度低的结尾处开始比较。不加详细描述 CcPurgeCacheSection的四个参数 第一个是要Flush的文件对象的Section对象指针 第二个是开始Flush的偏移量,如果该便宜为NULL,系统忽略第三个参数长度 第三个是长度。 第四个是是否重新初始化,设置TRUE会强迫所有fileobject重新初始化cache 4个参数一般按照我的格式设置即可。在xp,2003,下filemon4.34源码上通过,的确flush了 |
|
11楼#
发布于:2004-06-15 09:49
我试过呀,在2000下虽然是Flush了,但是好像在内存中还有数据,当我重新打开文本时,还是不从硬盘读数据。
|
|
12楼#
发布于:2004-06-16 09:18
to ttzwater
我也在做硬盘加密,我们交流交流吧~_~ lijuncao@hit.edu.cn |
|
13楼#
发布于:2004-06-16 20:50
我怎么判断文件是否被缓冲时老返回FALSE(就是说没被缓冲),但它明明用了文件影射的方式来访问
|
|
14楼#
发布于:2004-06-16 20:50
to satanli1982:
好啊,我的是ttzwater@21cn.com |
|
15楼#
发布于:2004-06-17 21:48
我的anders_xie@msn.com
msn也是这个 最近也在作加解密 另外有个问题,怎么在驱动里面获取硬盘序列号,请大虾教我 |
|