去年11月,国内著名的音乐电台APP蜻蜓FM摊上了大事——蜻蜓FM的APP被破解了!代码被破解这件事可大可小,可是偏偏破解者从破解的代码中发现了一件惊人的事实:蜻蜓FM在代码中添加了恶意唤醒程序代码,伪造APP活跃数据!破解者在破解过程中发现蜻蜓FM的APP代码居然连最基本的混淆都没有做,整个破解过程只用了dex2jar和反编译神器JD-GUI,不费吹灰之力就把整个APP的代码完全破解了出来。
其实,不仅仅是蜻蜓FM,很多商业Android开发者都不做APP代码混淆,只是没有像蜻蜓FM这样被暴露出来而已。
在知乎上,有一个安卓开发者在吐槽:之前发现过一个小米的项目没有混淆,两天就能把APK彻底还原为完整项目。最近找工作了解公司资料时又发现一个百万级用户的APP没有混淆,顿时感觉眼睛都瞎了,混淆这种 一两天就可以搞定的事情为什么这么多程序员不做?学Java的人应该都知道中间字节码是很容易被逆向工程的,难道这个世界真有这么多人神经大条到这种程度?
然后,就有一大堆程序员在下面回复,大概意思就是混淆不一定就安全了呀,而且还需要投入,更新的时候又麻烦,所以就不做混淆了云云。
APP被破解这个现象从智能手机出现的那一天就没有杜绝过。小编依稀记得,三年前《神庙逃亡》刚出来那会,各大安卓市场都能发现各种汉化版、破解版等等,结果下载下来发现玩的过程中穿插着大量的广告,不小心点击一下还会在后台下载APP。其实这APP是已经被打包党破解反编译之后,加入恶意代码的盗版。这几年各大安卓市场规范了很多,盗版几乎已经找不到了,但是在网络上一些阴暗的角落还有盗版应用的踪迹。
对于一个APP来说,代码可能算是最不值钱的了,但是这并不意味着我们可以不做代码混淆。如果没有做代码混淆,只能说明这个APP开发者没有安全意识,一个没有安全意识的互联网企业是非常危险的。想想最近的网易,再看看乌云上的曝光的各种漏洞,有多少是因为安全意识不行引起的。这次蜻蜓FM的事情如果混淆了,会被扒的这么彻底么?如果只是从单纯的职业道德来讲,是不是为企业避免了不少损失?
代码混淆是谷歌应对APP被破解这一个现象而研发出来的,需要在apk文件里添加了一个proguard.cfg文件用来混淆代码,虽然不能百分百保证APP安全,但这在一定程度上阻止了apk被反编译。但是,混淆的作用不仅于此,APP混淆的好处至少有以下三点:
1、缩小包体,一般可以可以缩小两成包体,包体越小推广越容易。
2、保护代码不被竞争对手轻易使用,有的APP功能是花了两三天才找到实现思路的,如果被别人直接看到代码一天内就可以把代码移值过去,节省大量时间。
3、增加破解难度,提高安全性,完全没混淆半个钟就可以看到所有代码,有很大风险,很容易造成漏洞被利用。
代码混淆就像保险一样,没有出事之前觉得代码混淆没有作用,一旦出事了才会后悔当初为啥没有做混淆。混淆不能保证APP安全,没有做混淆就表明APP开发者没有安全意识,这个安全意识往往比混淆更加重要。
如今,有一部分开发者已经提前意识到了这个问题,他们针对APP安全这个问题提炼出了一套属于他们的安全体系并以此来服务开发者,爱加密就是其中的佼佼者。
爱加密是北京智游网安科技有限公司2013年推出的核心产品,专注于为移动领域的金融、游戏、企业级应用及互联网开发者提供安全可靠的Android应用加密方案。
爱加密的APP安全体系主要包括三个部分:源码安全、应用加密安全和数据安全。其中,源码安全里包括高级代码混淆、dex文件加壳、dex文件加花、内存防dump等等,极大限度降低APP被破解反编译的几率。目前,爱加密针对APP个人开发者推出了免费版本的加密方案,对企业级应用推出了收费版本的加密方案,已经服务超过4万款APP,覆盖终端6亿以上。
上一篇: 包体可压缩8成!爱加密手游压缩简直颠覆!