【51CTO.com原创稿件】依托智能手机规模化应用,促使移动互联网得到长足的发展,进而各种功能丰富的APP走进我们的生活,带来便捷的同时,App加固也成为刚需。有效的加固,可避免被破解、盗版、二次打包、注入、反编译等风险,提升App的安全性、稳定性。当下,仍有人觉得iOS代码不用做加固,是因为苹果系统的封闭性导致iOS系统下的 App安全性相对较高。但是实际上iOS应用本身被破解的难度并不高,不管个人开发者还是大厂皆有保护代码安全的需求。
近日,数字联盟iOS加固技术产品团队接受了51CTO的专访,整个过程围绕应用加固技术的演变、业界常用iOS应用加固方法的不足及采用二进制研发的iOS应用加固产品“数字盾甲”展开。
应用加固技术的演变
应用加固技术并不是新兴技术,在移动互联网兴起前就已经存在,主要作用是防止PC端应用被破解或盗取。软件开发商为了保护版权,会选择各种方式,保护自己的软件。密钥常见的应用加固技术,起初仅由软件承载,后续又与硬相件结合,进行校验和认证,旨在增强加固力度。
随着智能手机渗透、安卓系统日益趋近成熟,App开发大军也逐渐庞大起来,主要分为两大流派:iOS系统 和Android系统,分别对应 .ipa 和 .apk文件格式。XcodeGhost事件发生后,人们开始对App的安全倍加重视。从开发角度来说,源代码安全问题是基于代码审计层次而决定的;从软件保护角度来说,解决App的安全问题则是对源代码的代码混淆、资源加密和逻辑加固等;从用户角度说,那就是App本身的安全性,是否会对个人隐私财产造成损失,是否是值得信赖的第三方平台。
安卓端应用批量涌现,对应的加固技术也如雨后春笋随之而生。出现这样的现象主要有两个原因,其一:庞大的用户群体。其二:编程手段过于上层。也就是安卓端兴起之前,软件破解通常使用C2、C++等编译性语言,得到二进制的结果后,造假分子去破解应用的难度相对较大。安卓端最初就选择Java语言做上层应用的开发,Java语言拥有标准化、高透明度的特点,所以安全性自然就会相对下降。造假者很容易便可了解到应用开发者的自检码、虚拟机等规范,破解难度较低。
安卓领域的加固技术经历关键的几次迭代:
- 改变原始代码,躲避初级分析;
- 在内存中加载代码;
- 创建虚拟的CPU或虚拟机,把标准官方指令,变成开发者自己私有化的指令,进而增加造假者分析和造假的难度。
业界常见iOS应用加固技术的不足
用户对App技术的核心诉求是无论采用何种手段,只要保证在不影响产品功能的前提下,提高被分析和调试难度即可。
张宇平·数字联盟CTO
数字联盟CTO张宇平表示,安卓端的加固市场经过多年的演变已经趋近成熟,但市面上还缺乏有效的iOS应用加固技术。在推广数字联盟反作弊技术产品“可信ID”的过程中发现,很多客户也有iOS应用加固的需求。
那么,传统的iOS应用加固技术有哪些不足呢?传统的iOS应用加固方式一般是通过编译器混淆程序代码,将有效信息淹没到各种无效信息中,干扰造假分析人员的视线。但加密方式大幅度增加代码体积的同时,还需要将应用的代码提供给第三方加固机构,再借助编译器去做混淆。对于客户而言,需要承担源代码泄露的风险。在加密/隐藏/混淆程序代码的过程中,应用包如果过大,会影响用户体验和下载意愿。
数字盾甲iOS应用加固技术“守正出奇”
目前看来,移动端的加固技术基本和PC端的发展轨迹雷同,从Windows平台加壳脱壳、反调试和反反调试到Andriod平台.apk加固、反调试代码混淆和加强壳。Windows平台下,ring3到ring0层的反调试技术已经非常成熟。相对于.ipa加固,.apk加固做的相对较好,业界已经有很多成型的App加固方案。
数字盾甲iOS应用加固技术“守正出奇”,沿用了PC端高难度的二进制加固技术的同时,给iOS应用加壳,既避免应用被盗版的风险,也防止黑客反编译进而保护核心业务逻辑。此项技术还融入了高级反调试和字符串混淆等技术,进一步保护应用不被调试器分析,防止 IDA Pro 等工具通过关键字定位破解核心代码逻辑。
据悉,使用数字盾甲 iOS应用加固技术后,原始App体积增加量不会超过1M,加固力度不会受到影响,可谓是“轻量级加固安全不打折”。对这项技术的需求主要体现在付费应用、企业应用、内有交易功能的应用和注重知识产权,以及珍视自己心血的各类中小开发者所开发的应用上。
当问及数字联盟 iOS加固技术未来的突破方向,数字盾甲iOS应用加固技术团队表示,将在代码虚拟化和其他资源(图片/声音)保护等方面做进一步研发。目前,数字联盟的App加固技术还没有应用于安卓平台,主要是因为安卓平台过于复杂,系统版本多、设备种类多。核心技术完备的情况下,兼容性方面也需要花费大量的时间去进行适配,安卓平台会稍晚上线。
【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】