trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:3287回复:17

动态加密文件

楼主#
更多 发布于:2004-08-16 09:36
我加密文件时只能加密小于64K的文件,当大于64K时里,除了第一次是在WRITE里外,其他在在FASTIOWRITE里,当我在FASTIOWRITE里,不能改变BUFFER里的内容,说是缺页了,希望高人指点指点.
我不仅要金子,我还要点石成金的手指!
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-16 13:13
这种问题讨论得已经够多了,就是只在Page Io Write里边加密,无论如何最后数据肯定通过这个途径写到硬盘上。

我想不通你去关心FastIoXXX()例程干什么?
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-16 16:12
 我发现大于64K时就不管用了,进到了FASTIOWRITE里
希望大家指点
我不仅要金子,我还要点石成金的手指!
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-16 18:49
我发现大于64K时就不管用了,进到了FASTIOWRITE里
希望大家指点
 


我上面不是已经说了吗?“最终”肯定会通过Page IO Write写数据到硬盘上,也就是说即使现在数据暂时经过FastIOWrite,以后System进程还是再次发送Page Io Write写请求。所以只要你截获了Page Io Write,数据肯定漏不了。
Sundsea
驱动老牛
驱动老牛
  • 注册日期2003-05-06
  • 最后登录2012-06-05
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望35点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-08-16 23:34
[quote] 我发现大于64K时就不管用了,进到了FASTIOWRITE里
希望大家指点
 


我上面不是已经说了吗?“最终”肯定会通过Page IO Write写数据到硬盘上,也就是说即使现在数据暂时经过FastIOWrite,以后System进程还是再次发送Page Io Write写请求。所以只要你截获了Page Io Write,数据肯定漏不了。 [/quote]
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
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
我就搞不懂为何出现如此的情形呢?
我是对移动盘进行加密,
我发现不能对原来的缓冲区操作,这时系统会说缺页错误
希望大家提题意见,要分是多的是,要多少有多少!
同时也交些同行做朋友嘛!
我不仅要金子,我还要点石成金的手指!
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-08-18 12:32
老兄,我真觉得你有点幽默。

我认为我的话说得够清楚了,是截获“PAGE IO WRITE”,而不是简单的截获IRP_MJ_WRITE。IRP_MJ_WIRTE也分为缓存和非缓存两种可能,我们只能处理“PAGE IO WRITE”这种类型。

你不要怪人家不理你,因为这种问题在以前讨论得非常多了,查询一下coolice的回复,仔细看看他是怎么说的。

-> 勤用搜索,先搜再问。
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-08-18 13:03
slwqw
    我在前已判断了Irp->Flags&IRP_NOCACHE,
    不管整样我是把IRP_MJ_WRITE里的操作都加密了
    但现在结果是没有被加密
    我觉得是向下调用时出错了,
    你能解释下我所遇到的现象吗?
    整样给你分?
我不仅要金子,我还要点石成金的手指!
zhangc98
驱动牛犊
驱动牛犊
  • 注册日期2002-03-30
  • 最后登录2004-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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)”
再试试看:)

目前:新手上路; 目标:高级站友; 理想:开国大佬; 方法:自己的努力+大家的关照!
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-08-24 10:22
zhangc98
    你好!
    我加了!
    现在好像好了!
    整样动态的解密呢?
我不仅要金子,我还要点石成金的手指!
Sundsea
驱动老牛
驱动老牛
  • 注册日期2003-05-06
  • 最后登录2012-06-05
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望35点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-08-24 12:29
解密逆过来,不就行了吗?
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-08-24 16:14
 大家好!
我整样对系统盘进行加密而不影响操作系统的使用呢?
我不仅要金子,我还要点石成金的手指!
Sundsea
驱动老牛
驱动老牛
  • 注册日期2003-05-06
  • 最后登录2012-06-05
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望35点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-08-24 16:37
大家好!
我整样对系统盘进行加密而不影响操作系统的使用呢?
 


有难度.
zhangc98
驱动牛犊
驱动牛犊
  • 注册日期2002-03-30
  • 最后登录2004-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-08-30 19:39
除非你把所有系统文件都过滤掉,
或者把系统盘原始的所有文件全都加密一次,
然后用到的时候解密,不过好像系统启动时用的那些
文件是在你的驱动还没有加载之前读出的,
这样还是很麻烦,总之难度比较大:)呵呵:)


目前:新手上路; 目标:高级站友; 理想:开国大佬; 方法:自己的努力+大家的关照!
one
one
驱动牛犊
驱动牛犊
  • 注册日期2002-04-13
  • 最后登录2014-06-09
  • 粉丝2
  • 关注2
  • 积分27分
  • 威望245点
  • 贡献值1点
  • 好评度21点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-08-08 12:05
下面是引用trent于2004-08-16 09:36发表的动态加密文件:
我加密文件时只能加密小于64K的文件,当大于64K时里,除了第一次是在WRITE里外,其他在在FASTIOWRITE里,当我在FASTIOWRITE里,不能改变BUFFER里的内容,说是缺页了,希望高人指点指点.



我遇到了同样的问题,只能加密小于64K的文件,而且也是处理“Irp->Flags&(IRP_PAGING_IO | IRP_NOCACHE | IRP_SYNCHRONOUS_PAGING_IO)”
的了

请问trent:您是如何解决的?
yuanyuan
驱动大牛
驱动大牛
  • 注册日期2003-01-15
  • 最后登录2010-08-04
  • 粉丝0
  • 关注0
  • 积分1025分
  • 威望300点
  • 贡献值0点
  • 好评度232点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-08-08 15:03
系统盘之外的整盘加密是可以实现的,这个我做过,很简单,而且不用在文件层
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
16楼#
发布于:2005-08-08 16:30
能否说一下思路
走走看看开源好 Solaris vs Linux
one
one
驱动牛犊
驱动牛犊
  • 注册日期2002-04-13
  • 最后登录2014-06-09
  • 粉丝2
  • 关注2
  • 积分27分
  • 威望245点
  • 贡献值1点
  • 好评度21点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2005-08-10 09:14
我的问题解决了,我把SfClose中的函数 CcPurgeCacheSection()去掉就没问题了。
游客

返回顶部