阅读:1517回复:7
高手请讲,给200分(在透明加密驱动加载过程中,操作rar文件时文件会多出空白)
我做了一个透明加、解密的文件系统过滤驱动。
现在可以对txt、office系列、图片等正常加解密。 我采用的是在文件中加入文件头的方式(文件头长为:4096)来记录加密信息。 目前的问题:我在压缩某一加密文件时,这个文件可以正常的被压缩,但是解压后,文件后多了4096个数字0。我认为winrar通过某种方式获得了这个加密文件的真实长度,但又读不到这么多内容,在解压后,就用数字0填充了,winrar通过什么方式获得的真值呢?我应该怎么骗过它呢? 这个问题困惑了我很久,都没有解决,如果大家谁知道请告诉我,先谢了。 |
|
|
沙发#
发布于:2007-06-20 17:43
winrar是以sequential的方式打开文件的.它发的读IRP中读的长度可能大于文件实际长度.
|
|
板凳#
发布于:2007-06-20 18:26
谢谢liyunch,什么是sequential方式呀,winrar是自已发irp获取文件长度的吗?
有一点可能我没说明白,举个例子: 比如文件大小=文件头+文件内容。 文件头:长度为4096,是我记录加密信息用的,而且是不想用户看到的。 文件内容:长度为5 文件的实际长度是4096+5 现在我通过修改 IRP_MJ_QUERY_INFORMATION IRP_MJ_SET_INFORMATION IRP_MJ_READ IRP_MJ_WRITE IRP_MJ_DIRECTORY_CONTROL Irp请求,用户会认为这个文件长度为5,而且也只看到文件内容。 但是经过压缩后解压的文件长度=5+4096。前面5个是文件内容,后面是4096个数字0 |
|
|
地板#
发布于:2007-06-20 21:03
具体的说不上来.你还是跟踪下写文件的情况
|
|
地下室#
发布于:2007-06-20 21:19
不止rar,肯定还有别的程序一样有这个问题吧,你只是试了几个简单的程序而已
加文件头确实是个超级麻烦的东西,连devia都不加头 不过我现在烦死了网络文件系统和缓存,唉,真累 |
|
|
5楼#
发布于:2007-06-21 09:25
应该是还有别的程序也能知道,但是目前常用的这些都试了,只有winrar知道文件的实际长度。
还有问题是不在于写的过程,而是在于winrar如何知道文件的长度的。 |
|
|
6楼#
发布于:2007-06-21 15:06
自己顶了
|
|
|
7楼#
发布于:2007-06-26 10:38
没有人回答就结贴了liyunch 和looksail 各给50吧,谢谢:)
|
|
|