用F407解压.ZIP文件!!!

2019-07-20 06:29发布

QQ截图20170510190012.png 各位还有别的方法吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
于大圣
2019-07-20 22:16
解压算法过程:
一. 压缩了file.zip ,内部只有一个空文件1, 进行调试跟踪.
1.  打开压缩文件.
2. 查询centraldir信息从end of centraldir
  2.1.  获取文件大小.
  2.2.  如果文件大小小于MAX_COMMENTSIZE 那么直接读取整个文件,否则读取MAX_COMMENTSIZE。  
  2.3.  读取出readsize。
  2.4.  从读取出的buffer中来判断0x06054b50,找出这个end of centraldir位置.
  2.5.  调转到endcentralpos 读取signature code(0x06054b50)
  2.6.  读取卷数,entry数量,centraldir 大小/偏移量,comment_size 等.
  2.7.  centralendpos -(centraloffset + centraldirsize) , 来获取centraldir对于卷开头位置的偏移量,准备读取centraldir.
3. 读取centraldir信息
  3.1.  从offsetcentraldir开始读取signature(0x02014b50) .
  3.2.  读取出版本号,压缩方式,日期信息,CRC,压缩大小,未压缩大小,entryname大小,file_extra_size , size_comment_file,起始卷index,internal file attr., external file attr., 当前项对于centraldir 的offset.
4. 读取entryinternal信息,比如名称,offset
5. 读取local file header 信息
  5.1. 检查signature(0x04034b50) , 日期,协议中local header信息.
二. 内部空目录1, 进行调试跟踪
   实际上差别仅仅在entryname,entryname length,以及由此导致的结构offset.

一周热门 更多>