ttzwater
驱动小牛
驱动小牛
  • 注册日期2003-06-07
  • 最后登录2011-10-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望23点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
阅读:3837回复:15

读解密问题?请vcmfc等各位大大进来看看

楼主#
更多 发布于:2004-06-11 18:29
翻看了版上的一些贴子,已经讨论的比较多了,可是有些问题还是没有搞明白,请各位大大再帮帮忙

做加解密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??

我都蒙了,请各位大大一定要帮帮忙

xxcat1220
驱动牛犊
驱动牛犊
  • 注册日期2004-01-19
  • 最后登录2010-12-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-12 23:14
哎,VCMFC好象已经退出了,现在感觉这里以前的高手都不在了,就是我们这些人了:)
NotePad确实挺奇怪的,打开文件时看不到读文件的内容,既IRP_MJ_READ,但写都正常,而且确实用了某种缓冲机制,因为比如用资源管理器打开某个文件夹时,或选中这个文件时,就已经发生了READ,你可以挂个FsFilter试试,将里面的FastIo和读写有关的例程的返回值直接设成FALSE,绕过FastIo看看,可能可以
satanli1982
驱动牛犊
驱动牛犊
  • 注册日期2004-03-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-13 07:59
关注!我有同样的问题。
Windows的缓存机制真是讨厌!写入硬盘好像也不是一下写入的。
satanli1982
驱动牛犊
驱动牛犊
  • 注册日期2004-03-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-13 08:01
还有就是请问楼主,你是怎么区分文件是否已被加密?
ttzwater
驱动小牛
驱动小牛
  • 注册日期2003-06-07
  • 最后登录2011-10-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望23点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-13 10:12
to xxcat1220
你的方法我之前已经试过了,不行,notepad应该用的是内存映射的方式来读写的,但是最终都应该转成PAGING IO,可是为什么只有写正常读不正常呢,我就搞不懂了


ttzwater
驱动小牛
驱动小牛
  • 注册日期2003-06-07
  • 最后登录2011-10-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望23点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-13 10:15
to satanli1982

写入问题可以用FlushFileBuffers强行写,我现在是放在一个特定的文件夹里面做的,所有里面的文件写加密,读解密
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-13 17:32
同样的问题开了几个主题,why?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-06-13 17:33
时间对你不重要吗?
但对很多人是很重要的
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
ttzwater
驱动小牛
驱动小牛
  • 注册日期2003-06-07
  • 最后登录2011-10-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望23点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-06-14 13:23
大哥,这是误操作,我在另一个主题里面已经解释了,也请斑竹去删了

无论如何,如果对您带来任何不便请您见晾!我在这向您道歉!!
anders.xie
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2004-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-06-14 20:44
http://podgoretsky.pri.ee/ftp/Docs/Microsoft/NTFSDrv/Chapter8.pdf

里面对缓存清空讲得很清楚
anders.xie
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2004-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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了
satanli1982
驱动牛犊
驱动牛犊
  • 注册日期2004-03-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-06-15 09:49
我试过呀,在2000下虽然是Flush了,但是好像在内存中还有数据,当我重新打开文本时,还是不从硬盘读数据。
satanli1982
驱动牛犊
驱动牛犊
  • 注册日期2004-03-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-06-16 09:18
to ttzwater
我也在做硬盘加密,我们交流交流吧~_~
lijuncao@hit.edu.cn
ttzwater
驱动小牛
驱动小牛
  • 注册日期2003-06-07
  • 最后登录2011-10-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望23点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-06-16 20:50
我怎么判断文件是否被缓冲时老返回FALSE(就是说没被缓冲),但它明明用了文件影射的方式来访问
ttzwater
驱动小牛
驱动小牛
  • 注册日期2003-06-07
  • 最后登录2011-10-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望23点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-06-16 20:50
to satanli1982:
   好啊,我的是ttzwater@21cn.com
anders.xie
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2004-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-06-17 21:48
我的anders_xie@msn.com

msn也是这个
最近也在作加解密
另外有个问题,怎么在驱动里面获取硬盘序列号,请大虾教我
游客

返回顶部