前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >APP加固方案需稳定与安全并重

APP加固方案需稳定与安全并重

原创
作者头像
腾讯云@移动安全
修改2018-10-26 15:19:44
10K1
修改2018-10-26 15:19:44
举报
文章被收录于专栏:移动安全移动安全

很多开发者没有意识到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
图1 逆向分析工具能直接看到未加固APP源代码逻辑,且能修改和重打包APP

应用加固经历了四个阶段,加固强度也是不断增强。

第一阶段 本地加载:

原理: 对原APP整体加密,壳APP把原APP解密后释放到本地,壳APP利用Android系统API,加载和启动原APP,启动完成后把原APP删除;

优点:稳定性好、实现简单;

缺点:安全性差,存在本地释放明文的过程,可以直接把原APP拿到;

 图2  本地加载方案大致原理
图2 本地加载方案大致原理

第二阶段 内存加载:

原理: 对原APP中dex、so、资源等不同数据做加密,壳APP hook Android系统加载dex、so、资源文件的API,在加载前对其在内存中进行解密,或者自己实现对dex、so、资源文件等的加载,且让Android系统能正常使用加载后的数据;

优点:安全性较高、稳定性较好 ;

缺点:内存中还是存在完整的明文数据,可以一次性dump出来;

 图3 内存加载方案大致原理
图3 内存加载方案大致原理

第三阶段 类抽取:

原理:对原APP  dex中部分函数相关的指令数据进行抽离出来,按照一定格式加密保存到文件中,dex里面的类被初始化时内存填充该类被抽离的函数,或者hook Android执行函数的API;

优点:安全性高 ;

缺点:稳定性差,需要对不同系统适配;

图4 类抽取原理图
图4 类抽取原理图

第四阶段  VMP:

原理:把原APP的dex中的部分函数虚拟化,把原函数设置为native函数,当函数被调用时直接走到自定义的虚拟机中解释执行。还有一种方法有的时候也被叫做java2C、java2Cpp,其原理是静态解析dex的指令,把它们转化成c/cpp函数,再用ndk编译成动态库,函数被调用是直接调用动态库中的函数。我们把这两种方案都统称为VMP。

优点:强度非常高,很难把虚拟化后的函数进行还原,尤其是java2C。

缺点:效率较低、稳定性可控性差

图5 VMP原理图
图5 VMP原理图

腾讯乐固 稳定+强力 高效保护APP安全

目前市场上常用的加固方案除了dex保护,还包涵内存保护、so加固、混淆等功能,强度较高的加固策略就是VMP。实际使用中,大多采用的是内存加载,或者内存加载+少量VMP。不直接采用最强的方案:把大部分函数都VMP化,主要是为了平衡安全性和兼容性。

  • 稳定性和安全性基本成反比,安全性强度越高,稳定性越差。
  • 安全性越高对保护APP处理的过程就越复杂,解密过程也就越复杂。
  • 实现安全保护功能多数需要依赖的系统API,越复杂依赖就越多。
  • Android版本多,特性变更也多,手机厂商对Android系统各种定制修改,导致很多API不统一。

APP的稳定性直接影响到开发者的业务开展,而APP的安全性又与开发者的利益相关。因此腾讯云乐固为了同时保证应用的安全性和稳定性,始终致力于对APP安全保护方案的优化,打造稳定性和保护强度领先行业水平的加固方案。

  • 只使用系统底层通用的API,能不依赖系统的都不依赖系统,始终坚持自己实现相关功能。
  • 把能独立封装的安全功能都进行封装,减少不必要的依赖。
  • 针对不同Android系统做优化加固方案,和谷歌、华为、小米、vivo等手机厂商紧密合作。

腾讯乐固目前已保护QQ、应用宝等亿量用户级别的APP,稳定性和防护能力不言而喻。

点击此处,可直接使用腾讯云应用加固,感受加固给APP带来的安全防护。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
应用安全开发
应用安全开发(Application Security Development,下文中也叫 Xcheck)为您提供优质的代码分析服务。Xcheck 凭借优秀的算法和工程实现,能在极低的误报率和漏报率前提下,以极快的速度发现代码中存在的安全漏洞。Xcheck 采用私有化部署的模式,所以产品使用的整个生命周期,源码都不会流出公司网络,杜绝源码泄露风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档