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