近年来,iOS应用安全问题越来越受到重视。 iOS应用也面临着IAP内购破解、山寨版本、破解版本等问题。本文分析了2个iOS游戏破解实例,同时提出了针对iOS游戏破解的防护措施。
1.2个iOS游戏破解实例分析
游戏加速分析过程
第一个实例就是加速器,加速器原理都差不多,只是实现方式不一样。它们的原理都是通过修改时间相关函数实现加减速功能,实现方式上主要是两大类,一类是U3D,另外一类是COCOS。如何做的呢?通过有无UnityAppController来判断是否为Unity游戏。如果为Unity游戏的话,就会用Hook OC的方法;如果不是Unity游戏,就会采用常规的Hook Gettimeofday方式修改游戏。
修改参数
破解效果
手游经常面对着各种外挂侵害,《旅行青蛙》是当下非常火的佛系游戏。通过iOS和安装安装包联合分析,就可以发现iOS使用的是IL2CPP模式,C#脚本转成C/C++代码,使用II2CppDumper还原符号。知道这些开发情况后,就可以搜索三叶草、抽奖券代码,通过修改对应的代码达到三叶草数目无限、抽奖券变成自己想要的效果等。
加速器和外挂都会伤害正常玩家——包括付费玩家,同时也会影响游戏开发者的收入。
2.iOS游戏安全防护措施:
目前比较有效的iOS游戏防护方法如下:
1.防静态分析,这里包括字符串加密、符号混淆、代码逻辑混淆和游戏存档加密;
2.防动态调试、反调试和通信安全(数据加密);
3.外挂检测、加速挂、内存修改挂和自动任务挂等。
字符串加密
代码逻辑混淆
字符串加密:就是在编译器编译源码时,对程序中的字符串进行加密,运行的时候动态解密;
符号混淆:则是将代码中使用的类名、方法名、属性替换成其他意义的名字;
代码逻辑混淆:就是在编译器编译源码时,对代码结构进行变形,提高代码的复杂度和逆向分析难度,从而保护程序不被轻易破解,里面也可以加密算法逻辑和特定的验证逻辑,比如一开始的代码结构很简单,改了以后就会变得很复杂。
反调试
以上都属于放静态分析范畴,它都是对变量进行加密保护,让破解者无法搜索。外挂都会有反调试分析,因此静态分析之外还有防动态调试,比如说反调试,它使应用无法被调试、避免被动态分析的风险;同时,易盾还会做通信数据加密,防止被抓包工具抓包分析。
除以上防护措施之外,易盾也采取主动出击,做外挂检测、加速挂、内存修改挂和自动任务挂等,全面提升游戏安全等级。
相关阅读: