konglord
驱动牛犊
驱动牛犊
  • 注册日期2007-01-09
  • 最后登录2007-02-05
  • 粉丝0
  • 关注0
  • 积分130分
  • 威望14点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
阅读:1348回复:6

这个解密思路可行吗?

楼主#
更多 发布于:2007-01-15 13:27
  我是想对一个已经加密好的文件进行动态解密, MJ_Create的时候就把文件读出来,然后把文件解密到一个buffer中, 然后每次系统调用MJ_Read的时候,拦截它,然后根据请求的位置和长度,从解密完的buffer中取得数据返回给irp请求,不知道这个思路可行吗? 希望各位大侠赐教....
nvicly
驱动牛犊
驱动牛犊
  • 注册日期2006-09-12
  • 最后登录2019-01-21
  • 粉丝1
  • 关注0
  • 积分12分
  • 威望158点
  • 贡献值0点
  • 好评度82点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-01-15 14:32
遇到没有IRP_NOCACHE标识的MJ_Read时,你就改不了了...
同样FastIoRead也会通行无阻...
konglord
驱动牛犊
驱动牛犊
  • 注册日期2007-01-09
  • 最后登录2007-02-05
  • 粉丝0
  • 关注0
  • 积分130分
  • 威望14点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-01-16 11:09
自己顶下
michaelgz
论坛版主
论坛版主
  • 注册日期2005-01-26
  • 最后登录2012-10-22
  • 粉丝1
  • 关注1
  • 积分150分
  • 威望1524点
  • 贡献值1点
  • 好评度213点
  • 原创分0分
  • 专家分2分
地板#
发布于:2007-01-16 23:36
MJ_Create的时候就把文件读出来

So the file is in cache now with encrypted data in it.

然后把文件解密到一个buffer中

How big the buffer you want to maintain, 2G, 10G? How many buffers you want to maintain, 100, 1000? So you want to have a in memory file system. Is it doable?

然后每次系统调用MJ_Read的时候,拦截它,然后根据请求的位置和长度,从解密完的buffer中取得数据返回给irp请求

File read can change values of file system internal structures, such as file position, besides returning data. How are you going to handle that? Do you want your in-memory file system support WRITE?

So the question is why you want to have a buffer for each file with decrypted data?
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-01-17 12:11
好奇怪的思路。。。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
konglord
驱动牛犊
驱动牛犊
  • 注册日期2007-01-09
  • 最后登录2007-02-05
  • 粉丝0
  • 关注0
  • 积分130分
  • 威望14点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-01-22 18:34
因为我的加密可能需要对整个文件进行加密,无法实现读出一段解密一段....
对于小的文件这个思路可以的 我已经实现了
xiabl
驱动牛犊
驱动牛犊
  • 注册日期2005-10-24
  • 最后登录2010-05-20
  • 粉丝0
  • 关注0
  • 积分221分
  • 威望77点
  • 贡献值0点
  • 好评度71点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-01-23 16:34
大概记事本是可以这么做的。呵呵。

如果对一个文件一边做IRP_MJ_READ操作 , 又一边做IRP_MJ_WRITE操作, Write的时候先写到buffer内存里,在前后整合后加密到文件中去(如果按字节加密倒也简单,如果不是按字节加密有一定风险,我记得好像文件
是可以锁定某块地址的CFile::LockRange  不知道被锁定的区域能不能写入,如果不能写入的话,那就只能用字节加密了)。
对于CACHE不知道是什么原理?
但与通过与拦截Api结合可以加密Word 及 三维CAD软件。
拦截 CreateFileMapping
小桥流水人家
游客

返回顶部