如何做好iOS应用安全?这有一把行之有效的“三板斧”

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首次推出面向移动游戏的诊断室服务,搭配现场分享答疑,切实降低游戏开发者的破解外挂风险。有不少参与者称赞易盾的同学有侠之精神——因为帮助他们解决了不少实际问题。

原文地址:http://blog.51cto.com/13610827/2088211

时间: 2024-11-09 02:19:58

如何做好iOS应用安全?这有一把行之有效的“三板斧”的相关文章

要想做好iOS开发,必须要清楚这几个点!【架构师总结出来的经验】

前言: 每个人的都有独特的经历,因此会有特别的事情会让ta感到快乐,并享受做自己喜欢的事情.写程序也不例外,我在很年轻的时候就明白这点,它成为我开始创业的无形资产.写程序的渴望来自我想完整独立做一件事情的渴望,做移动开发,可以让我不依赖任何人就能学会完成一个完整的App需要的所有能力. 为什么我当初会学习现在使用的Objective-C和Swift编程语言?因为我喜欢和用户直接交互,而移动开发满足了我这点.这股激情让我在学习iOS开发时能保持110%的热情. 作为一个开发者,有一个学习的氛围跟一

iOS:学习runtime的理解和心得

http://www.cocoachina.com/ios/20150901/13173.html 作者:兴宇是谁 授权本站转载. Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西.最近在学习Runtime,有自己的一些心得,整理如下, 一为 查阅方便 二为 或许能给他人一些启发, 三为 希望得到大家对这篇整理不足之处的一些指点. 什么是Runtime 我们写的代码在程序运行过程中都会被转化成runtime的C代码执行,例如[target doSometh

参加iOS开发培训,效果才王道

无限互联iOS培训学院已经开办快3年了,三年来为iOS开发市场,累计培养了数千名iOS技术人才,已向数百家企业输送iOS开发人才.但,无限互联是如何保证教学质量的呢?为什么敢保证100%有效果呢?当遍地黄沙的时候,要如何从中分辨真金呢?在iOS培训领域,讲师和课程无疑是效果的关键,iOS培训课程的构建决定了一个培训班的优劣.但,要选择好的iOS培训学院,除了从师资.教学方式及课程内容以外,还需要完善的iOS培训学习系统. iOS开发是"活"知识,不可"死板"的学 i

【原】移动web页面兼容处理的思考

本月收到一份关爱里程碑的邮件,入职满3周年了,从一个懵懂的新人到从容淡定的小油条,在外辛苦打工不容易,能收到一封简单的关怀邮件也是有感欣慰,这里祝愿公司越发展越好. 进入主题,移动网页设计中,很多同学常问一个问题:这么多种移动设备,要兼容哪几类呢? 相信很多人会回答主流的系统ios.android,但是这2个系统又有多个版本,如ios就有4.5.6.7,android有2.2.2.3.3.0.4.1.4.2,包括我之前提到winphone 8,大家也在考虑到底该不该兼容,这是一件非常头疼的事情,

使用jQuery的9个误区

千万别忘记了使用最新的版本哦,毕竟每个版本更新肯定会在功能或性能上有所提升,或者修复了几个Bug,但有时惰性让人不想再去研究新版本的变化,因此,提醒你别忘记了在新项目用新的一定比旧版本要好. AD: jQuery是如此容易使用以至于我们有时候忘记了CSS的存在.我们在使用CSS时,几乎不去考虑性能,因为它已经是快得不值得再 去做什么优化上的努力.但现实世界中,JQuery会导致令开发人员发疯的性能问题.有时你会毫无知觉地就损失那么几毫秒.我们也很容易忘记的一些功能并 继续使用一些旧的(和不那么好

Runtime - 01

Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西.最近在学习Runtime,有自己的一些心得,整理如下, 什么是Runtime 我们写的代码在程序运行过程中都会被转化成runtime的C代码执行,例如[target doSomething];会被转化成objc_msgSend(target, @selector(doSomething));. OC中一切都被设计成了对象,我们都知道一个类被初始化成一个实例,这个实例是一个对象.实际上一个类本质上也是一个对象

Android IOS WebRTC 音视频开发总结(六七)-- 在线教育虽火要做好其实不容易

本文主要介绍在线教育这个行业,文章最早发表在我们的微信公众号上,支持原创,详见这里, 欢迎关注微信公众号blackerteam,更多详见www.rtc.help 最近很多朋友在咨询在线教育的事(其实之前也多),意识到这里可能存在很多机会,所以将一些资料整理出来分享给大家,希望对正在从事或即将从事这个行业的朋友有所帮助. 行业火爆的背后是因为蛋糕很大,看看我们合作伙伴艾瑞之前发的一些研究报告您就可以大概了解整个行业现状了. -------------------------------------

iOS 浅谈架构 架构设计的方法论

摘要:iOS客户端应用架构看似简单,但实际上要考虑的事情不少.本文作者将以系列文章的形式来回答iOS应用架构中的种种问题,本文是其中的第一篇,主要讲架构设计的通识和方法论等,同时还讨论了大家关心的架构分层.是否要有common文件夹等问题. 缘由 之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验.在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会从哪些方面来说呢? 当时看到这个问题正好在乘公车回家的路上

iOS应用架构谈 开篇

iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 网络层设计方案 iOS应用架构谈 动态部署方案 iOS应用架构谈 本地持久化方案 缘由 之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验.在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会从哪些方面来说呢? 当时看到这个问题正好在乘公车回家的路上,闲来无聊就答了一把.在zzz在微信朋友圈上追问了几个问题之后,我觉得有必要开个博客专门来讲讲一