ios应用面临很多破解问题,常见的有iap内购破解、山寨版本、破解版本等;大众应用上,微信抢红包、微信多开等;而在ios游戏上,越来越泛滥的外挂问题也不断困扰着游戏厂商。
网易云易盾资深安全开发工程师王桂林
3月17日,cocoa社区cvp系列开发者沙龙在北京举办,网易云易盾资深安全开发工程师王桂林出席沙龙,并做《ios游戏的破解以及防护》的演讲,分享了究竟该如何做好app的安全防护工作。
攻防,首先得知道他们是怎么破的
要想防护的好,必须要知道对手是怎么破解的,王桂林首先分享了两个破解分析实例。
游戏加速分析过程
第一个实例就是加速器,“加速器原理都差不多,只是实现方式不一样。”王桂林说,它们的原理都是通过修改时间相关函数实现加减速功能,实现方式上主要是两大类,一类是u3d,另外一类是cocos。如何做的呢?“通过有无unityappcontroller来判断是否为unity游戏。如果为unity游戏的话,就会用hook oc的方法;如果不是unity游戏,就会采用常规的hook gettimeofday方式修改游戏。”
修改参数
破解效果
只要是手游,基本都被外挂侵害,《旅行青蛙》是当下非常火的佛系游戏,网易云易盾资深安全开发工程师于是就对它进行了分析:通过ios和安装安装包联合分析,就可以发现ios使用的是il2cpp模式,c#脚本转成c/c 代码,使用ii2cppdumper还原符号。王桂林说:“知道这些开发情况后,就可以搜索三叶草、抽奖券代码,通过修改对应的代码达到三叶草数目无限、抽奖券变成自己想要的效果等。”
不论是加速器,还是外挂,都会伤害正常玩家——包括付费玩家,同时也会影响游戏开发者的收入,面对这些情况时,我们该怎么办?
ios游戏安全,行之有效的“三板斧”
那ios游戏怎么才能做好相应的保护?面对现场大家期盼的眼神,王桂林分享了网易云易盾行之有效的“三板斧”:
· 第一板斧是防静态分析,这里包括字符串加密、符号混淆、代码逻辑混淆和游戏存档加密;
· 第二板斧是防动态调试、反调试和通信安全(数据加密);
· 第三板斧是外挂检测、加速挂、内存修改挂和自动任务挂等。
字符串加密
代码逻辑混淆
具体来看字符串加密、符号混淆、代码逻辑混淆。字符串加密,就是在编译器编译源码时,对程序中的字符串进行加密,运行的时候动态解密;符号混淆,则是将代码中使用的类名、方法名、属性替换成其他意义的名字;代码逻辑混淆,就是在编译器编译源码时,对代码结构进行变形,提高代码的复杂度和逆向分析难度,从而保护程序不被轻易破解,里面也可以加密算法逻辑和特定的验证逻辑,比如一开始的代码结构很简单,改了以后就会变得很复杂。
反调试
王桂林说,上面的都属于放静态分析范畴,它都是对变量进行加密保护,让破解者无法搜索。外挂都会有反调试分析,因此静态分析之外还有防动态调试,比如说反调试,它使应用无法被调试、避免被动态分析的风险;同时,易盾还会做通信数据加密,防止被抓包工具抓包分析。
做好上面防护之外,易盾也采取主动出击,做外挂检测、加速挂、内存修改挂和自动任务挂等。
“这就是网易云易盾行之有效的三板斧——从防静态分析到防动态调试到最后的外挂识别,全方位保护ios应用和游戏安全。”王桂林最后说。
“移动安全诊断室”活动
今天的北京,外面大雪纷飞,室内热情似火。易盾联合cocos首次推出面向移动游戏的诊断室服务,搭配现场分享答疑,切实降低游戏开发者的破解外挂风险。有不少参与者称赞易盾的同学有侠之精神——因为帮助他们解决了不少实际问题。