移动APP反外挂攻防实战

简介:

**> 前言
**

近日,某某龙在2018年的一次会议上发表了一个演讲,4000多人聚集在现场玩“跳一跳”游戏。随着他们指尖的翻飞跳跃,大屏幕上的现场排名也在不断刷新……而在全场的惊叹声中,最高分出现了,967分!而这位最高分得主,就是某某龙本人。
在随后的演讲中,某某龙也表示,这款DAU在一点几个亿的小游戏,网上居然出现了非常多的外挂。笔者以“跳一跳”为关键词在全球最大的同性社交平台github上进行搜索,居然有650个搜索结果。这些外挂,大多数都是以图像识别为基础的游戏辅助程序。利用这些外挂,玩家们可以很轻松的跳到几千分,甚至上万分。
1

同样,在2018年1月23日举办的阿里游戏云“棋牌X安全”技术分享沙龙的活动现场,阿里巴巴集团安全部专家陵轩也对游戏从业者深恶痛绝的外挂问题进行了详细的解读,并针对反外挂提出了阿里的最新解决方案。
2

阿里游戏云“棋牌X安全”技术分享沙龙活动现场

陵轩在活动中提到,作为一款社交平台上的小游戏,如果外挂泛滥,一方面,看到朋友使用外挂打出了一个很高的分数,那么朋友之间的信任可能会出现问题;另一方面,外挂行为会破坏整个游戏的规则,并且让规则立即失效。基于这两方面,最终导致的就是正常玩家的流失,游戏面临衰败和死亡。
比如,一个正常玩家,在不断练习之后,每局的分数应该是会缓慢增长的,如果某个时间段突然增加了几千分甚至几万分,这本身就已经很不正常了。

外挂的种类
根据外挂的实现原理,以及对游戏正常业务造成的危害程度,我们对外挂大致可以分为如下三大类:辅助型、修改内存型、破解型。
3
辅助型
这类外挂对游戏和业务的影响相对比较小,本身不会修改和破解游戏的代码,主要是模拟用户点击,自动化的做一些重复性的操作。比较常见的是图像识别和按键精灵等工具。通过图像识别技术,可以判断人物当前的位置、火车票余量等;然后通过按键精灵模拟用户点击,达到人物在游戏中的走动、自动购买火车票等操作。
最火的案例莫过于现在的直播答题场景了。
4
外挂程序通过OCR识别出题目的文字,然后通过搜索引擎检索答案,最后自动化点击题目的答案,做到全自动化答题,并且准确率还很高。
5
修改内存型
修改内存型外挂依托于官方游戏APP,属于动态修改游戏业务逻辑,这类外挂往往会向游戏进程中注入第三方恶意模块,然后通过修改代码的逻辑、修改内存中的数值等手段达到修改游戏地理位置、人物奔跑加速、破解收费道具、修改游戏币数量和增加血量等。此类外挂会极大的破坏游戏的平衡性。
如下是“XX酷跑”的游戏外挂,属于典型的内存修改类外挂程序。此外挂程序会往游戏进程中注入第三方模块,然后通过修改游戏的代码逻辑和内存中的数值,可以随意改变游戏的飞行距离、奖励的倍数、奔跑的速度等参数。
6
破解型
破解型游戏外挂对于游戏厂商来说影响是最大的,不仅会破坏游戏的平衡性,更会加速游戏业务走向衰亡。
破解型外挂又分为两类:二次打包和脱机外挂。
APP的二次打包是基于对官方APP的修改,属于静态修改代码逻辑。黑客们通过逆向分析游戏逻辑,修改游戏赖以生存的核心功能,比如去除游戏中的广告代码,破解单机游戏的收费逻辑,插入盗号代码等。
如下是《XX那三国》游戏的二次打包版本,其中被插入了“一键跳过”副本、游戏对话速度可调至3倍速等外挂功能。
7
脱机外挂的出现对游戏厂商来说是毁灭性的打击,这意味着游戏客户端和服务器端通信的逻辑都已经被黑客逆向的非常清楚了,所有的游戏操作都可以脱离游戏客户端而通过脚本来实现。
脱机外挂的危害也显而易见的,首先,原本属于游戏客户端的广告、道具等收入没有了;其次,脚本操作比正常的客户端操作要快很多很多,极大的破坏了游戏的平衡性。当年PC时代最为火爆的《传奇》游戏,很大程度上也是没落于脱机外挂的出现。
如下是《狼人杀》游戏的批量注册小号工具,黑客通过逆向游戏注册逻辑和算法,编写PC端自动化注册工具,完全脱离游戏客户端APP,属于典型的脱机外挂。
8

外挂难防
作为一名游戏行业反外挂领域多年的从业者,陵轩也在现场对外挂的存在原因,防控难度及外挂的分类等进行了详细的分析。
9

阿里巴巴集团安全部专家 陵轩


游戏外挂问题,不仅仅只在微信“跳一跳”小游戏中出现,它更是一个手游行业普世存在的、并且不能被忽视的严重问题。那么,这些外挂究竟是如何产生的呢?
首先,相较PC时代的C++游戏客户端,现在的手机游戏基本上都是以脚本语言为主。由于脚本语言的特性,游戏的开发成本降低了,迭代周期缩短了,但也同样面临容易被反编译、篡改破解等问题。
第二,以往在PC时代被广泛使用的游戏驱动保护,到了移动时代由于手机的限制,也同样不能用了。这就导致了黑客可以有Root、越狱等超级权限,而游戏则只有普通的用户权限,这种攻防对抗层面的权限不对等,也是移动端外挂难防的一个很重要原因。这就好比我是一个拿菜刀的屠夫面对一群拿AK47的恐怖分子一个道理,根本没法打。
第三,出于对手机网络的不稳定,以及流量使用等原因的考虑,很多手机游戏的计算逻辑和过程都在客户端进行,这就导致了黑客可以很容易的篡改客户端进行游戏作弊,比如,直接跳过某些游戏关卡、BOSS一击毙命等。
第四,手游时代对外挂工作室来说,作弊成本低。一台主流PC机可以虚拟出几十个模拟器;作弊工具产业链成熟,包括IP代理商,卡商猫池、打码平台、群控软件等。
第五,游戏开发同学通常缺乏安全对抗经验,无法及时发现和阻断外挂的使用和传播。

谁在使用外挂?
随着移动互联网的兴起,同时,手游行业制作外挂的成本低,导致更多的外挂制作者从PC纷纷向移动端转变,这就导致了手游外挂的泛滥。那么,究竟是哪些人会使用外挂呢?
第一类:虚荣心作祟的玩家。在游戏中,玩家们可以沙场驰骋、江湖侠情,在现实中失意的人们可以再游戏中得到慰藉,使得心灵愉悦。那么,如何才能花更少的钱,得到更大的心灵慰藉呢?唯有借助外挂的力量,可以在战场上杀更多的人,比分比别人高。
第二类:打金工作室。对于打金工作室来说,游戏币的产量是直接关系到变现的。使用外挂可以自动化的执行游戏中的一些重复性劳动,比如固定的主线任务、跑商、押镖等。而且,在外挂的帮助下,可以24小时全程无人值守,大大提供游戏币的产出量。
第三类:竞争对手。通过对官方游戏逆向分析,竞争公司可以很容易的通过换肤等手段,制造一款玩法相近、界面类似的新游戏;另外,竞争对手还会使用外挂批量注册小号,来破坏游戏的正常运营。

通用的检测和防御机制
游戏外挂的实现方式多样,危害也都各不相同,那么游戏厂商又该如何对不同种类的外挂做针对性的防护呢?
第一步:客户端APP的防护。客户端在外发之后,最终到了正常玩家手里还是黑产手里,这块是不可控的,那么如何提高黑客分析客户端代码的成本,保护端上代码的安全是头等大事。我们可以对游戏脚本进行加密处理,对于解密游戏脚本的核心代码逻辑进行代码混淆、加固,反外挂从提升攻防门槛开始,一个保护机制相对完善的客户端,虽然不能杜绝外挂,但能在一定程度上将大部分跃跃欲试的黑客阻挡在外。
第二步:通信链路的防护。脱机外挂的产生,很大程度上是因为客户端APP和服务器端通信的签名算法、加密算法被破解了。采用常规加解密算法的变形算法,以及保护好核心秘钥至关重要,采用白盒加密不失为一种好的对策。
第三步:业务层及时防控。云端业务层通过实时的各种IP库、手机库的查询、人机模型算法以及离线的数据分析等。从服务器端及时发现和防控已知和未知的作弊方案,为业务及时止损。被黑客攻击并不可怕,可怕的是不知道被攻击,允许黑客一小段时间的作恶,换取绝大多数用户的安全,是业界通用的做法,快速发现问题并解决问题才是治理外挂的核心。

物美价廉的解决方案
基于前面的介绍,手机游戏外挂的制作难度和成本极低,外挂的制作者又都是专业的黑产从业人员;另一方面,对于游戏厂商来说,普通游戏开发者一般都更关注游戏功能逻辑的实现和开发,本身缺乏安全技术和游戏攻防对抗经验。因此,游戏厂商想要及时的发现并阻断外挂作恶相对来说比较困难,从投入产出比来看,成本也相对偏高。
定制的解决方案研发和维护成本过高,但通用的又担心效果不好。是不是能有一个折中的方案呢?答案是肯定的。其实,攻防对抗是一个两军对垒人和人、人和机器博弈的过程,一下子把门槛提升太多是不合时宜的,就像一下子改一个大版本着急大不一样,这个是得不偿失的。利用前面提到的分层而治,就能取得一个比较好的事半功倍的效果。
阿里云游戏安全解决方案,从云(云端业务层)、管(通信链路层)、端(游戏客户端APP)全链路防检测并防控游戏外挂。经过多年双11的攻防演练,阿里巴巴业务风控体系具备及时发现黑产的“眼睛”,为游戏厂商及时止损。
阿里游戏云“棋牌X安全”技术分享沙龙还在继续,更多会议内容及相关资讯敬请持续关注阿里游戏云。

目录
相关文章
|
6月前
|
移动开发 JavaScript 前端开发
【前后端实战项目】带你从入门到实战全面掌握 uni-app
【前后端实战项目】带你从入门到实战全面掌握 uni-app
|
6月前
|
架构师 Java
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
98 0
|
1月前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
316 0
|
3月前
|
消息中间件 Java
【实战揭秘】如何运用Java发布-订阅模式,打造高效响应式天气预报App?
【8月更文挑战第30天】发布-订阅模式是一种消息通信模型,发送者将消息发布到公共队列,接收者自行订阅并处理。此模式降低了对象间的耦合度,使系统更灵活、可扩展。例如,在天气预报应用中,`WeatherEventPublisher` 类作为发布者收集天气数据并通知订阅者(如 `TemperatureDisplay` 和 `HumidityDisplay`),实现组件间的解耦和动态更新。这种方式适用于事件驱动的应用,提高了系统的扩展性和可维护性。
67 2
|
5月前
|
开发框架 移动开发 JavaScript
SpringCloud微服务实战——搭建企业级开发框架(四十七):【移动开发】整合uni-app搭建移动端快速开发框架-添加Axios并实现登录功能
在uni-app中,使用axios实现网络请求和登录功能涉及以下几个关键步骤: 1. **安装axios和axios-auth-refresh**: 在项目的`package.json`中添加axios和axios-auth-refresh依赖,可以通过HBuilderX的终端窗口运行`yarn add axios axios-auth-refresh`命令来安装。 2. **配置自定义常量**: 创建`project.config.js`文件,配置全局常量,如API基础URL、TenantId、APP_CLIENT_ID和APP_CLIENT_SECRET等。
217 60
|
4月前
|
监控 Android开发 开发者
Android经典面试题之实战经验分享:如何简单实现App的前后台监听判断
本文介绍在Android中判断应用前后台状态的两种方法:`ActivityLifecycleCallbacks`和`ProcessLifecycleOwner`。前者提供精细控制,适用于需针对每个Activity处理的场景;后者简化前后台检测,适用于多数应用。两者各有优劣:`ActivityLifecycleCallbacks`更精确但复杂度高;`ProcessLifecycleOwner`更简便但可能在极端场景下略有差异。根据应用需求选择合适方法。
40 2
|
4月前
|
前端开发
uniapp 实战 -- app 的自动升级更新(含生成 app 发布页)
uniapp 实战 -- app 的自动升级更新(含生成 app 发布页)
1264 1
|
5月前
|
安全 测试技术 网络安全
APP攻防-资产收集篇&反证书检验&XP框架&反代理VPN&数据转发&反模拟器
APP攻防-资产收集篇&反证书检验&XP框架&反代理VPN&数据转发&反模拟器
|
6月前
|
开发框架 移动开发 JavaScript
SpringCloud微服务实战——搭建企业级开发框架(四十六):【移动开发】整合uni-app搭建移动端快速开发框架-环境搭建
正如优秀的软件设计一样,uni-app把一些移动端常用的功能做成了独立的服务或者插件,我们在使用的时候只需要选择使用即可。但是在使用这些服务或者插件时一定要区分其提供的各种服务和插件的使用场景,例如其提供的【uni-starter快速开发项目模版】几乎集成了移动端所需的所有基础功能,使用非常方便,但是其许可协议只允许对接其uniCloud的JS开发服务端,不允许对接自己的php、java等其他后台系统。
306 61
|
6月前
|
网络协议 算法 Android开发
安卓逆向 -- 实战某峰窝APP(动态分析)
安卓逆向 -- 实战某峰窝APP(动态分析)
112 4