阅读:1347回复:6
这个解密思路可行吗?
我是想对一个已经加密好的文件进行动态解密, MJ_Create的时候就把文件读出来,然后把文件解密到一个buffer中, 然后每次系统调用MJ_Read的时候,拦截它,然后根据请求的位置和长度,从解密完的buffer中取得数据返回给irp请求,不知道这个思路可行吗? 希望各位大侠赐教....
|
|
沙发#
发布于:2007-01-15 14:32
遇到没有IRP_NOCACHE标识的MJ_Read时,你就改不了了...
同样FastIoRead也会通行无阻... |
|
板凳#
发布于:2007-01-16 11:09
自己顶下
|
|
地板#
发布于: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? |
|
地下室#
发布于:2007-01-17 12:11
好奇怪的思路。。。
|
|
|
5楼#
发布于:2007-01-22 18:34
因为我的加密可能需要对整个文件进行加密,无法实现读出一段解密一段....
对于小的文件这个思路可以的 我已经实现了 |
|
6楼#
发布于:2007-01-23 16:34
大概记事本是可以这么做的。呵呵。
如果对一个文件一边做IRP_MJ_READ操作 , 又一边做IRP_MJ_WRITE操作, Write的时候先写到buffer内存里,在前后整合后加密到文件中去(如果按字节加密倒也简单,如果不是按字节加密有一定风险,我记得好像文件 是可以锁定某块地址的CFile::LockRange 不知道被锁定的区域能不能写入,如果不能写入的话,那就只能用字节加密了)。 对于CACHE不知道是什么原理? 但与通过与拦截Api结合可以加密Word 及 三维CAD软件。 拦截 CreateFileMapping |
|
|