近年来,随着各种iOS安全隐患的频频出现,大家逐渐认识到,iOS和Android一样也会面临严重安全问题,因此保护iOS应用安全变得非常重要。本文针对iOS可能的安全风险,介绍了iOS应用加固的方案。
一、iOS应用有哪些安全风险?
iOS开发者遇到比较多的安全风险主要是APP被破解分析,进而出现APP被山寨、刷单、作弊等。下面举几个例子:
山寨APP
《神庙逃亡》应用,左边是合法的,右边是山寨的,山寨的APP就把图标的背景色以及局部做了一些修改,看起来和正品是如此的相似。
《神庙逃亡》APP被山寨
游戏外挂
游戏外挂是通过修改游戏数据,为玩家谋取利益的作弊程序。它利用一定技术针对App进行非原设操作,篡改游戏原本正常的设定和规则,大幅增强游戏角色的技能和超越常规的能力,从而达到轻松获取胜利、奖励和快感的好处。它会严重影响游戏平衡性,损害玩家以及产品的利益。一些常见的游戏辅助如游戏蜂窝、触动精灵等。
和Android中一样,iOS也同样存在云真机,可以在云端玩游戏。这时使用外挂、辅助就更方便了。
游戏外挂程序
二、如何进行iOS应用加固?
根据iOS技术和破解原理,对iOS应用进行系统加固,可以有效降低应用破解风险。可以从以下几个方面进行加固保护:
字符串混淆:对字符串进行加密保护,防止通过IDA等工具获取关键词定位核心业务代码;
类名、方法名混淆:对方法名和方法体进行混淆,保证源码被逆向后很难明白它的真正功能;
程序结构混淆加密:对应用程序逻辑结构进行打乱混排,保证源码可读性降到最低;
完整性校验:防止出现盗版的情形;
反调试、反注入等主动保护策略:这是一些主动保护策略,增大破解者调试、分析APP的门槛。
详细保护策略如下:
1. 字符串加密
字符串会暴露很多关键信息,攻击者可以根据显示的字符串,快速找到核心业务代码,从而破解应用。加密字符串可以增加攻击者阅读代码的难度以及根据字符串静态搜索的难度。字符串加密前后对比如下:
2.符号混淆
符号混淆是将代码中类名、方法名、属性名替换为无意义符号,增加代码逆向难度;防止敏感符号被class-dump工具提取,防止IDA Pro等工具反编译后分析业务代码。比如一款混淆后的APP,用IDA等工具打开,如下图所示:
3.代码逻辑混淆
在编译环节将iOS代码逻辑变形膨胀复杂化,降低反编译及逆向破解风险。混淆前后的对比如下(左边是原始结构,右边是混淆后的结构):
4.网络传输数据加密
对客户端传输数据提供加密方案,防止通过网络接口的拦截获取数据。
5.完整性校验
对App的完整性做校验,防止盗版应用的泛滥。
6.URL编码加密
对程序中出现的URL进行编码加密,防止URL被静态分析。
7.反外挂
通过技术手段,抵抗游戏外挂,创建一个和谐公正的游戏环境。
8.主动保护策略
利用反调试、反注入、反hook等主动防护机制,防止攻击者、恶意分析者动态调试分析程序。
三、iOS应用加固总结
通过以上iOS加固保护措施,应用的安全性会得到全面提升,大大提高了破解的难度。对于iOS开发者来说,有必要了解这些措施,特别是针对一些金融、证券、游戏类APP的开发,进行iOS加固保护更加必要。
相关阅读: