阅读:1358回复:5
关于notepad读写*.TXT的动态加密的问题!(文件过滤驱动)(80分)
我在做一个文件的加密程序,通过过滤驱动来截取文件的读写数据,
读出来的时候进行解密,写的时候进行加密! NOTEPAD读*.txt文件是使用mdl的。 截取到notepad读,写数据时,觉得特别乱,不知道在哪一步进行加解密! notepad读 txt文件时,是kernel mode, 而写文件时,先是 一个usemode的写,然后是一个kernel mode的写 原来的思路是不过读用的是什么方式,找到数据缓冲区,进行解密 写的时候也不管用的是什么方式,找到数据缓冲区,进行加密 但这样的话,notepad读txt时,加解密就乱套了! 有哪位高手说说到底应该怎么做? :mad: :mad: :mad: [编辑 - 1/4/03 by Ice_Bin] |
|
最新喜欢:okincn
|
沙发#
发布于:2003-01-05 06:06
这个问题不那么好回答。
notepad读 txt文件时,是kernel mode, -----这个确实是用的mdl read 方式。 而写文件时,先是 一个usemode的写,然后是一个kernel mode的写 ---都是工作在kernel mode.只不过一个用的是usermode buffer, 一个用的是kernel mode buffer. 那个使用user mode buffer的工作在 dispatch level 以下,后面仿生的那个使用kernel mode buffer 的事实上就是所谓的lazy write 了,那个是由cache系统系统来调用的。 ------------------------ 原来的思路是不过读用的是什么方式,找到数据缓冲区,进行解密 写的时候也不管用的是什么方式,找到数据缓冲区,进行加密 但这样的话,notepad读txt时,加解密就乱套了! --当然 ------------------------ 这个好想不太对。和我以前犯过的一个错误相似。你再写的时候不能够遭到数据buffer然后加密。因为系统调用你的dispatch routine来写并传给你一个有效的buffer不意味着它以后不在用这个buffer 作为以后读的提出数据. 为了不影响后续的使用,你只能在文件系统向下层调用时(disk.sys或者它的filter driver)调用时,分配新的数据区,encrypt 你自己的数据buffer, 然后让下层进行真正的数据写。 当然等待完成,release buffer也是你得事情。 以前陆版主曾经提过一次pgp disk的实现,说道它自己实现了一个fat. 留心看了一下,确实不是一个简单的上层filter 可以解决的。 |
|
板凳#
发布于:2003-01-05 14:12
首先谢谢你的回答!
上层的FILTER搞不定,那下层的filter如何做? 能不能给个思路? 『 以前陆版主曾经提过一次pgp disk的实现,说道它自己实现了一个fat. 留心看了一下,确实不是一个简单的上层filter 可以解决的。』 有没有他的文章?寄我一份!thanks! swordbin@sina.com |
|
|
地板#
发布于:2003-01-05 19:20
按照ifs的说明,文件系统设备驱动程序只能由上层filter, 不能有下层filter.
这个大约是pgp自己实现文件系统的原因吧。如果你要做一个干净的encrypt driver, 你需要读pgp的source.而且大约需要相似的方式。 当然这不意味着用只用file system filter driver就实现不了这个东西。你没有忽略处理fastio吧。如果你没有忽略处理这个,应该可以的。你做的时候可能需要处理下面的东西: 1。读,不能确保永远是mdl read, 你需要处理fastio ,保证添入userbuffer里的是decrypt后的东西。 2。 写。判断irp的写模式,之后是paging io的时候才encrypt. ifs里有完整的vfat source, 从读那里开始可能可能是个捷径。 |
|
地下室#
发布于:2003-01-08 19:55
首先谢谢你对我的问题的关注:
老板现在又让做另外一个东东了,哎,现在没有时间去试这个了,能不能给你的邮件我啊,等我试的时候有什么问题好直接请教你! 先谢了,我的邮件是 swordbin@sina.com :P |
|
|
5楼#
发布于:2003-01-09 17:10
太复杂
|
|