ZIP伪加密(deprecated)

ZIP伪加密

经过伪加密的apk,改成zip格式打开会发现里面的文件都经过了加密。

APK实际上是Zip压缩文件,但是Android系统在解析APK文件时,和传统的解压压缩软件在解析Zip文件时存在差异,利用这种差异可以实现给APK伪加密的功能。在Zip结构中,Central Directory部分的File Header头文件中,有一个2字节长的名为 General purpose bit flags的字符按,其中如果第0位置1,则表示Zip文件的该Central Directory是加密的,若果使用传统的解压缩软件打开这个Zip文件,在解压该部分Central Directory 文件时,需要输入密码。当然,用APKTOOL也无法解压。

 
对apk伪加密实现,可以使用Python的zipFile模块来做,在Python的zipfile模块中,ZipInfo类中记录了Zip文件中相应的Central Driectory 的相关信息,包括General purpose bit flags, 在ZipInfo类中属性为flag_bits, 因此将需要加密的APK文件的每个ZipInfo的flag_bits和1做或操作,实现在General purpose bit flags的第0位置1.
 
用这段代码(已经是2013年的了):http://bbs.pediy.com/showthread.php?t=174825
C:UsersLarryDesktop>java -jar ZipCenOp.jar
tastypear@gmail.com
coolapk.com
no source here, but u can reverse as u like

usage:
ZipCenOp.jar <option> <file>
option:
        r : recover a PKZip
        e : do a fake encryption

进行伪加密:

C:UsersLarryDesktop>java -jar ZipCenOp.jar e 1.apk

然后安装,提示:Failure [INSTALL_FAILED_INVALID_APK]

然后解密,安装,提示:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

又听闻新版本系统已经不接受为加密过的APK了。此种方法已经没意义了。不过源码还是可以学学的。不得不感叹技术变化得太快,尤其安全方面,需要不停学习啊。

REFERENCE:http://1.honebl.sinaapp.com/?p=43