之前看过一个讲解如何破解APK的帖子,觉得APK真是很脆弱,很容易被反编译、二次 打包,仅利用apktool工具就可将其完美破解,部分大公司会对其公司的APK进行防二次打包和防apktool打包,但其代码都是写在java层,并 且apktool的升级也会导致其安全保护级别降低。
辛辛苦苦写的代码被别人那么轻松就能得到,甚至二次打包,注入恶意代码、植入广告,作为开发者总感觉心里有点不舒服。那么Android如何防二次打包呢?下面小编就做个简短的分享。
传统的防止APK二次打包的方式主要有图片故意破坏、伪加密、APK包破坏,但是这些方式的保护效果有限,无法真正的保护应用的安全。比较有用的是高级防护方式:采用花指令高级混淆、文件夹混淆、 Android技术验证。
花 指令的基本原理是由设计者特别构思一些指令,可以使反汇编的时候出错,让破解者无法清楚正确地反汇编程序的内容,迷失方向。文件夹混淆是利用 Android 系统环境下的文件夹名的特殊性来对源码文件夹进行混淆,让混淆后的文件夹在Window看起来失去原有的逻辑性,但是完全不影响其在Android系统上 的运行。Android技术验证的原理是在代码启动的时候本地获取签名信息后对签名信息进行检验来判断自己的应用是否是正版,如果签名信息不是正版则提示 盗版或者直接崩溃。
这 些防止二次打包的方式虽然在一定程度上可以起到不错的效果,但是如果遇到高手的话还是免不了被破解。而爱加密采用的指纹校验被破解的可能性几乎为零,它的 基本原理是采用特殊算法为APK中的所有文件都对应一个唯一的指纹,每次运行时,APK内部会再次进行指纹生成,如果生成的指纹和原本指纹不相同,程序会 自动退出或崩溃。
那开发者如何对APK进行加固保护呢?目前很多的开发者都在使用专业的第三方APP加密服务平台爱加密,不需要再花费大量时间和精力来研发相关的APP加密保护方法。