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:\Users\Larry\Desktop>java -jar ZipCenOp.jar [email protected] 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:\Users\Larry\Desktop>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