aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
阅读:1000回复:4

文件加密,很简单的问题,可惜我不会

楼主#
更多 发布于:2004-11-23 15:32
假如我要对D盘的所有要写的数据进行加密。

是不是我要处理 所有的IRP_MJ_WRITE

假如不是,那我应该要处理那些IRP_MJ_WRITE?
========================================
注:我刚写了个文件加密,对D盘 处理所有的IRP_MJ_WRITE。

结果 蓝屏重启.

我不知道是不是这个原因。
技术交流:aasa2@21cn.com QQ群:10863699
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-23 16:19
你也在做这个,呵呵,令人头痛的东东 。。。
是得处理IRP_MJ_WRITE,但不是所有的。
if( Irp ->Flags & ( IRP_NOCACHE | IRP_PAGING_IO | IRP_SYNCHRONOUS_PAGING_IO ) )
{
//加密
}
else
{
//passthrough
}
一些细节的东西可以参考论坛里面的老帖子。
在交流中学习。。。
aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-23 17:40
我按照这样处理的,结果还是蓝屏。

我怀疑是加密函数出错了,把加密函数删了,结果还是蓝屏。

不知道是什么原因?

但是我注意到一点:
就是在加密完成后,需要调用IoCallDevice()。我将此函数改成IoSetCompletionRoutine()后,就不会蓝屏,但是写到硬盘上的数据为明文。

郁闷中。。。。。。。。
技术交流:aasa2@21cn.com QQ群:10863699
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-11-23 17:58
关键是得把写磁盘的偏移和数据长度记录好,识别出哪部分是加密的,哪部分时未加密的,如果原来就没有数据就简单多了。
---内核开发合作或提供基础技术服务QQ:22863668 ---
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-24 10:33
IoCallDevice??应该是IoCallDriver吧,但愿只是在帖子发错了。
加解密根本不用IoSetCompletionRoutine,只有处理IRP_MJ_WRITE和IRP_MJ_READ就可以了。我是在filemon的代码上改的,基本步骤参考了“sfilter动态加解密吐血总结”,没什么大问题。
在交流中学习。。。
游客

返回顶部