虽然苹果宣称所有的设备和应用软件都很安全,但iOS系统并非想象中那么牢固,也有可能会被恶意软件攻击,更严重的是被黑产利用,造成经济损失。不少游戏的官方iOS版本刚推出,就有人寻找漏洞和越狱办法,由此复刻山寨版的应用进行牟利。对此,iOS应用应该采取相应的加固保护措施,当机立断杀灭黑产蛀虫,避免安全漏洞被大规模“钻空子”。
一、IPA加固方案背景
对于iOS应用的加固保护,通用的做法都是使用Xcode插件的模式,基于源码进行加固。这种方式可以有效的保护用户的源码安全,没有泄露的风险。但是,源码加固也有几个比较明显的不足:
1)加固容易出错
由于源码加固也需要执行完整的预编译、编译、链接流程,所以加固中途可能会出现一些编译错误,导致加固失败。
2)加固时间变长
源码加固除了执行正常的预编译、编译、链接流程外,还需要额外执行加密、混淆操作。所以,加固时间,相比Xcode直接打包要变长一些。
3)跨平台支持有限
现在很多用户都是使用跨平台开发工具进行应用开发,这种方式他们是不需要转化为Xcode项目就可以直接打包提审Appstore。所以,没有Xcode项目也就没法进行源码加固了。
于是,有了全新的IPA在线加固方案。
二、IPA加固方案概述
虽然被称为IPA加固方案,但是该方案并不是基于IPA进行加固,而是基于Archive文件(Archive实际上是一个文件夹),由Archive再导出IPA。
IPA加固方案,是基于 LLVM的 中间代码技术进行的,所以Xcode项目必须开启bitcode,然后打包生成Archive。如果项目中用到了三方库,而三方库没有开启bitcode,这也没关系,我们会提供支持bitcode的工具进行兼容。
相比源码加固方案,IPA加固方案使用起来更方便。源码加固方案,是给用户发送加固工具,保存在用户的MAC电脑上,然后在该MAC电脑上执行加固命令。而IPA 加固方案,则采用在线加固的形式。用户通过官网上传 Archive 压缩包,进行在线加固;加固完成后,下载加固后的新的Archive 压缩包到用户本地,最后导出用于提审AppStore的IPA。
三、IPA加固方案优势
1) 项目类型无限制
IPA加固基于生成的Archive包,跟项目本身无关。不管是React Native、Flutter、weex、uni-app等跨平台框架,还是Unity、Cocos等游戏引擎,只要能开启bitcode 并生成Archive包,就可进行加固。
2)开发语言无限制
不管是Object-C,还是swift,以及C/C++或者其他的脚本语言,IPA加固都一样兼容。随着版本的迭代,就算他们的语法发生了颠覆性改变,IPA加固也是一样兼容。比如swift,如果是源码加固的方式,需要对swift 4、4.2、5各个版本分别做兼容处理,这是一项很耗时的工作。
3)加固过程更稳定
IPA加固没有了编译、链接过程,就避免了容易出错的编译流程问题,大大提高加固过程的使用体验。
4)加固效率更高效
IPA加固方案,运行在易盾高性能的云服务器上,所以加固时间更快,更不会因为客户机器性能的原因导致加固时间延长。同时,Xcode打包后上传到加固后台平台进行加固,不影响开发人员的正常开发以及其他工作。使用IPA加固方案也有2个限制:(1)必须开启bitcode;(2)生成Archive包。
四、IPA加固方案功能
1.代码逻辑混淆
对OC/Swift/C/C++代码进行控制流平展、控制流伪造、指令替换、间接跳转、指令分割、不透明谓词等处理,混淆代码执行流程。
2.字符串加密
对OC/Swift/C/C++代码中的明文字符串进行加密保护,避免攻击者通过关键词来分析代码逻辑。明文字符串,加密后如下:
3.防反编译
防止攻击者使用逆向分析工具将二进制代码反编译为伪代码。一个完整的函数,经过加固后,函数逻辑完全被隐藏。
以AGEmojiPageView类的setButtonTexts为例。加密前,有完整的实现逻辑可以查看分析。
加固后,setButtonTexts的实现已经被隐藏。
4.防二次打包
对应用进行安全校验,防止IPA被重新签名发布,如果重新签名则直接退出。
5.反调试
防止应用被LLDB、IDA等工具恶意调试。
6.防数值修改
游戏应用中有很多的数值数据,比如攻击力、血量、魔法值等,修改器可以直接对这些数值进行篡改以达到破解的目的。防数值修改功能,就是让修改器无法定位到该数值而达到无法修改的目的。
五、IPA加固总结
如果用户的打包机子性能比较好、不方便对外提供archive包,可以选择源码加固的方式,在用户本地的机子上进行加固;如果用户的打包机子性能不是太好、没有xcode项目源码等,可以选择IPA在线加固方式。
易盾通过多年技术深耕,在iOS安全加固方面有着诸多积累,具备了源码加固、IPA加固两种方式并存的模式,并且在兼容性、有效性、便捷性等方面已经具有相当的优势,为普通应用、游戏程序提供有效的安全保护。(作者:易盾算法专家生蚝)
相关阅读: