一、iOS的安全问题
世所公认,iOS系统安全性非常高,很少出现漏洞,几乎不会中毒的情况。然而随着各种iOS安全隐患的频频出现,人们逐渐认识到,iOS跟Android一样也面临严重的安全问题。苹果宣称所有的iPhone都很安全,不会被恶意软件攻击,其实这只不过苹果封闭式的系统管理能够及时处理漏洞罢了。
我们已经习惯,每个新的iOS系统出来没多久,就会有大牛找到越狱的方法。比较有名的越狱团队如iH8Sn0w、Geohot、Comex等,以及国内的盘古团队。就像最新iOS 10.1.1版本,刚出来一个星期,安全研究员Luca Todesco就在推特上晒图自曝越狱成功,iH8Sn0w和盘古团队也取得了不错的进展。只要越狱了,iPhone手机就处于完全裸奔状态,很多平时不能做的事情就可以做了,比如破解分析APP、大范围泄露用户隐私数据等。
其中,跟我们iOS开发者息息相关的问题,主要就是被破解、分析。APP被破解分析进而刷单作弊,或者APP被山寨以次充好等。APP一直以来存在的“山寨”现象,引起越来越多开发者的不满,山寨泛滥的后果将是劣币驱逐良币,打击创新者的积极性,造成恶性循环。
下面举几个例子:
1.山寨APP
比如上面的《神庙逃亡》应用,左边是合法的,右边是山寨的,山寨的APP就把图标的背景色以及局部做了一些修改,看起来和正品是如此的相似。
2.微信多开
这类APP在淘宝上都有销售。正常情况,一个手机只能有一个微信账号在线,但是微信分身版让用户可以在同一个手机上同时登录多个微信号,这样可以满足一些用户的不同需求,比如进行公众号营销、用不同的微信号联系不同的人等。同时这些破解后的微信还有一键转发小视频、一键评论、一键点赞等强大的功能。
3.自动抢红包
下面是一款红包神器的运行页面:
打开这款神器后再登录微信,如果微信群里有人发出红包,它就会第一时间帮你抢到红包了,从此“发家致富,迎娶白富美,走上人生巅峰”,哈哈!
4.游戏外挂
游戏外挂是指通过修改游戏数据,为玩家谋取利益的作弊程序或软件。它利用一定技术针对App进行非原设操作,篡改游戏原本正常的设定和规则,大幅增强游戏角色的技能和超越常规的能力,从而达到轻松获取胜利、奖励和快感的好处。它会严重影响游戏平衡性,损害玩家以及产品的利益。
比如常见的一些游戏辅助:游戏蜂窝、触动精灵、触摸精灵等。
另外就是一些修改器、加速器,这些危害比较大。比如常见的有八门神器、IGG、GameGem、DLGMemor等修改器;烧饼、Speed Intensifier、xx等加速器。
GameGemiOS直接修改游戏中的数据,比如攻击力、血量等。
Speed Intensifier可以直接选择不同的加速倍速,换来全新的游戏体验。
下面是一个游戏中的一个外挂,功能是:全局全屏攻击,并且攻击力超高,相当于秒杀。
外挂效果如下:满屏都是攻击球,轻松13杀。
二、iOS保护方案
既然iOS应用也有那么多的破解、外挂问题,那么我们如何才能更好地保护我们的应用,确保安全呢?
从逆向分析来看,我们可以从以下几个方面来保护我们的APP:
1.字符串混淆:对应用程序中使用到的字符串进行加密,保证源码被逆向后不能看出字符串的直观含义。
2.类名、方法名混淆:对应用程序的方法名和方法体进行混淆,保证源码被逆向后很难明白它的真正功能。
3.程序结构混淆加密:对应用程序逻辑结构进行打乱混排,保证源码可读性降到最低。
4.完整性校验:防止出现盗版的情形
5.反调试、反注入等一些主动保护策略:这是一些主动保护策略,增大破解者调试、分析APP的门槛。
下面我们来一一解读:
2.2 符号混淆
符号混淆的中心思想是将类名、方法名、变量名替换为无意义符号,提高应用安全性;防止敏感符号被class-dump工具提取,防止IDA Pro等工具反编译后分析业务代码。
比如一款混淆后的APP,用IDA等工具打开,如下图所示:
“Labels”栏里,显示的这些符号,不管是类名还是方法名,谁也看不出来到底什么意思,这个函数到底是什么功能,就有点丈二和尚摸不着头脑的感觉,这就大大增加了破解者分析APP的难度。
2.3 代码逻辑混淆
代码逻辑混淆有以下几个方面的含义:
1、对方法体进行混淆,保证源码被逆向后该部分的代码有很大的迷惑性,因为有一些垃圾代码的存在;
2、对应用程序逻辑结构进行打乱混排,保证源码可读性降到最低,这很容易把破解者带到沟里去;
3、它拥有和原始的代码一样的功能,这是最最关键的。
混淆前后的对比如下(左边是原始结构,右边是混淆后的结构):
2.4 URL编码加密
对程序中出现的URL进行编码加密,防止URL被静态分析。
2.5 网络传输数据加密
对客户端传输数据提供加密方案,防止通过网络接口的拦截获取数据。
2.6 完整性校验
对App的完整性做校验,防止盗版应用的泛滥。
2.7 主动保护策略
除了上面的一些被动保护方法,我们还可以加入一些主动的防护机制,比如反调试、反注入、反hook、反tweak等。
2.8 防御外挂
通过技术手段,打击外挂,给大家创建一个和谐的游戏环境。
三、结束语
总之,添加以上的一些保护措施后,iOS应用的安全性会获得很大的增强,大大提高了破解者破解的难度。对于iOS开发者来说,有必要了解这些措施,特别是针对一些金融、证券、游戏类APP的开发,保护方面的需求就更加必要。