zip文件解析与利用

原文:https://blog.csdn.net/hp910315/article/details/77717746 

我们知道android的apk文件实质就是一个zip文件,所以对于zip文件的研究是非常有必要的。

一、Zip文件结构

1、Zip文件可以包含多个使用不同压缩方式甚至不压缩的文件。 
2、File Entry表示一个文件实体,一个压缩文件中有多个文件实体 
3、文件实体由一个头部、文件数据和数据描述符组成(压缩后的,压缩算法在头部有说明) 
4、Central Directory由多个File header组成,每个File header都保存一个文件实体的偏移 
5、文件最后由一个叫End of central directory的结构结束

从上面可以知道可以通过Central Directory中的File header确定每个文件实体的位置,并且可以通过遍历Central Directory获取File header的个数来确定文件实体的个数。

---------------------------------------
[local file header 1]            |
[file data 1]               File Entry 1
[data descriptor 1]              |
---------------------------------------
    . 
    .
    .
---------------------------------------
[local file header n]            |
[file data n]               File Entry n
[data descriptor n]              |
---------------------------------------
[File header 1]                  |
                         [central directory]
[File header n]                  |
---------------------------------------
[end of central directory record]
---------------------------------------

1.1. File Entry结构 
1.1.1. local file header 文件头 


1.1.2.file data 文件数据

记录了相应压缩文件的数据

1.1.3.data descriptor 数据描述符

用于标识该文件压缩结束,该结构只有在相应的local file header中通用标记字段的第3bit设为1时才会出现,紧接在压缩文件源数据后。

1.2. Central Directory 
1.2.1. File Header

1.3. End of central directory record

参考文章: 
Zip文件结构 
ZIP文件格式分析

二、Zip伪加密

Zip伪加密就是修改Central Directory中的文件的文件头File Header的标志位,如下图所示。

50 4B 01 02:目录中文件文件头标记(0x02014b50)
1F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密,00 00 改为09 00或者01 00即可完成伪加密)
08 00:压缩方式
07 76:最后修改文件时间
F2 48:最后修改文件日期 
......
......
在Android应用保护中之前被用到,因为Android系统对于Apk的解析中跳过了文件头,所以当这个字段修改为加密的时候,就可以防止apk被人解压,但是不会影响apk的安装。但是这个漏洞的利用在android4.3之后就不行了

参考文章: 
Apk伪加密实现与破解JAVA源码 
APK伪加密制作和解密 
classes.dex有密码保护,无法解压出来 
zip相关加密破解总结

三、zip注释字段的利用

在zip文件的文件末尾有两个字段Comment length和Comment,分别表示注释长度和注释内容,在我们的apk中Comment length为0,Comment为空,我们可以在Comment中追加我们需要的内容,例如渠道号,但是它不会对apk造成破坏,下图所示。

全面K歌app的增量升级方案使用的就是这个来为apk添加渠道号,这样就可以在一个apk写入不同的渠道号进行下发而不需要编译多个apk下发。

参考文章: 
全民K歌增量升级方案

猜你喜欢

转载自blog.csdn.net/fengjinghuanian/article/details/86607458