很多开发者没有意识到APP的安全隐患可能会严重损害他们的利益,加固可以帮助他们规避很多风险;
很多加固厂商没有意识到APP的低稳定性可能会严重影响开发者的业务开展,强度与稳定并重的加固方案才是开发者所需要的。
推荐每一个开发者使用应用加固,为自己的app、业务负责!(点击可免费加固)
黑产猖獗?严重损害开发者利益
恶意推送信息的SDK——“寄生推”SDK,用户下载安装后,该SDK开发商可以通过云端控制的方式对目标用户下发包含恶意功能的代码包,进行Root提权,静默应用安装等隐秘操作。
多款百万级别用户量的应用都被恶意集成了“寄生推”SDK,共涉及300多款应用潜在影响用户近2千万。受到影响的设备会不断弹出广告和地下推广应用,给用户和应用开发者带来重大损失。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???——《腾讯安全移动实验室2018年上半年手机安全报告》
智能手机的普及促使了大量优秀APP的诞生,但同时也催生了大批黑产。
每一个APP都是开发者心血的结晶,当开发者终于将自己的创意落地时,殊不知有一群黑产正利用APP存在的漏洞,对APP进行逆向分析、反编译、二次打包,嵌入各类病毒、木马等恶意代码及低俗广告,严重损害开发者的利益。
65%的移动APP至少存在1个高危漏洞,平均每1个APP就有7.32个漏洞;88%的金融类APP存在内存敏感数据泄露问题;每10个娱乐类APP就有9个至少包含一个高危漏洞;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ——《FreeBuf:2017年度移动App安全漏洞与数据泄露现状报告》
应用加固?有效提高黑产作恶门槛
“加固”是APP安全的重要防护手段。开发者利用应用加固可在一定程度上保护APP的核心代码算法,提高黑产逆向、二次打包的难度,有效缓解恶意攻击。
?图1 逆向分析工具能直接看到未加固APP源代码逻辑,且能修改和重打包APP?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
应用加固经历了四个阶段,加固强度也是不断增强。
第一阶段 本地加载:
原理: 对原APP整体加密,壳APP把原APP解密后释放到本地,壳APP利用Android系统API,加载和启动原APP,启动完成后把原APP删除。
优点:稳定性好、实现简单
缺点:安全性差,存在本地释放明文的过程,可以直接把原APP拿到。
图2 ?本地加载方案大致原理
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
第二阶段 内存加载:
原理: 对原APP中dex、so、资源等不同数据做加密,壳APP hook Android系统加载dex、so、资源文件的API,在加载前对其在内存中进行解密,或者自己实现对dex、so、资源文件等的加载,且让Android系统能正常使用加载后的数据。
优点:安全性较高、稳定性较好
缺点:内存中还是存在完整的明文数据,可以一次性dump出来。
??图3 内存加载方案大致原理
?
?
第三阶段 类抽取:
原理:对原APP ?dex中部分函数相关的指令数据进行抽离出来,按照一定格式加密保存到文件中,dex里面的类被初始化时内存填充该类被抽离的函数,或者hook Android执行函数的API。
优点:安全性高
缺点:稳定性差,需要对不同系统适配。
图4 类抽取原理图
?
第四阶段 ?VMP:
原理:把原APP的dex中的部分函数虚拟化,把原函数设置为native函数,当函数被调用时直接走到自定义的虚拟机中解释执行。还有一种方法有的时候也被叫做java2C、java2Cpp,其原理是静态解析dex的指令,把它们转化成c/cpp函数,再用ndk编译成动态库,函数被调用是直接调用动态库中的函数。我们把这两种方案都统称为VMP。
优点:强度非常高,很难把虚拟化后的函数进行还原,尤其是java2C。
缺点:效率较低、稳定性可控性差
图5 VMP原理图
腾讯乐固?稳定+强力? ? ??高效保护APP安全
目前市场上常用的加固方案除了dex保护,还包涵内存保护、so加固、混淆等功能,强度较高的加固策略就是VMP。实际使用中,大多采用的是内存加载,或者内存加载+少量VMP。不直接采用最强的方案:把大部分函数都VMP化,主要是为了平衡安全性和兼容性。
稳定性和安全性基本成反比,安全性强度越高,稳定性越差。安全性越高对保护APP处理的过程就越复杂,解密过程也就越复杂。实现安全保护功能多数需要依赖的系统API,越复杂依赖就越多。Android版本多,特性变更也多,手机厂商对Android系统各种定制修改,导致很多API不统一。
APP的稳定性直接影响到开发者的业务开展,而APP的安全性又与开发者的利益相关。因此腾讯云乐固为了同时保证应用的安全性和稳定性,始终致力于对APP安全保护方案的优化,打造稳定性和保护强度领先行业水平的加固方案。
只使用系统底层通用的API,能不依赖系统的都不依赖系统,始终坚持自己实现相关功能。把能独立封装的安全功能都进行封装,减少不必要的依赖。针对不同Android系统做优化加固方案,和谷歌、华为、小米、vivo等手机厂商紧密合作。
作为长期从事安卓开发的人员,还是必须具备安全意识,推荐大家使用腾讯乐固加固,稳定性、强度比较均衡。
(点击可免费加固)
?
77714075