hua818 发表于 2024-11-27 12:48:24

移动游戏市场外挂问题解析:影响、类型及防范措施

一、前言

近年来,移动游戏市场呈爆发式增长,收入快速增长。据第三方统计,如图所示,2015年国内手游市场规模达到514.6亿,如此火爆的市场必然会吸引大量居心不良的不良分子。插件在移动市场悄然兴起。

目前,在手游市场上,有很多需求催促着外挂的发展。例如,金矿工作室希望更高效地获取游戏币;大量屌丝玩家想花少量的钱获得更大的快感;竞品公司或恶意玩家想要恶意破坏游戏的正常运行。这类外挂会影响游戏开发商的收入和游戏玩家的体验。作为一名手游从业者,必须开始了解和关注外挂。本节重点介绍插件的相关知识。

2.什么是插件?

外挂原本是指任何用来破坏正常游戏数据和游戏程序逻辑的工具或破解版。比如可以修改游戏内存数据的修改器,或者可以修改网络数据包的抓包工具。这类插件或多或少都会影响游戏的内存数据、文件数据、网络数据,甚至代码逻辑。

然而,随着插件市场的发展,插件又衍生出了其他恶意变种。此类插件不会影响游戏数据和逻辑,例如离线插件、模拟器和脚本向导。离线外挂是外挂作者逆向游戏协议后独立开发的非法客户端。它可以让玩家节省大量时间并玩更多游戏。模拟器可以让玩家在PC上玩手机游戏,并在FPS等游戏中获得更好的成绩。操作环境帮助玩家变相碾压对手;脚本向导可以记录模拟玩家行为,响应游戏事件,实现自动刷金币、经验等功能。然而,这些新型外挂有一个共同的特点:欺骗游戏服务器、客户端、设备和运营商。

结合上述分析,可以给出一个更适合当前手游安全状况的外挂定义:破坏游戏客户端正常数据和代码逻辑,或者篡改操作的工具或破解版。游戏客户端的状态。

3.插件的分类

手游中已经出现了大量的外挂样本。根据其特点,可整理分类图如图所示。

插件分类

插件可以分为两类:辅助版和破解版。这两类插件的核心区别在于是否需要依赖游戏客户端。辅助插件需要与游戏客户端配合运行;而破解版是非法客户端,可以独立运行。

3.1 辅助

辅助插件需要依赖游戏客户端,无法自行生效。根据其范围又可以进一步分为两个小类:专用插件和通用工具。

3.1.1 特殊插件

特殊插件插件,只针对特定游戏,属于定制化插件。它的存在形式根据不同的平台而不同。下面是SO形式,IOS下是dylib形式。例如,流行的恰恰、圈圈助手就是专用插件的典型例子。内部集成了多种手游功能插件,针对不同的手游注入不同的SO来实现插件功能。类似的888辅助也出现在IOS上,为众多热门手游注入不同的Dylib,实现无敌、即时打怪的功能。这种特殊插件的插件功能比较灵活,一般可以随时关闭或开启。

圆修饰符

3.1.2 通用工具

顾名思义,万能工具适用于所有手机游戏,支持通用功能。

内存修改器,用于搜索和修改游戏内存数据。平台上比较主流,典型代表有烧饼、葫芦侠等,如下图所示。玩家一般使用修饰符根据游戏面板中的精确数据来搜索对应的值,然后进行多次搜索排除,根据值的变化规律定位到对应属性在内存中的位置,并直接修改为夸张的效果值。后期还有各种变体,比如模糊搜索,只通过把数据变大变小来搜索;加密搜索,具有反简单加密(异或加密等)功能的搜索。这类修改器插件,常见的插件功能就是改变角色属性,实现瞬间打怪、无敌等。

https://img1.baidu.com/it/u=2298131494,1429338160&fm=253&fmt=JPEG&app=120&f=JPEG?w=607&h=348

烧饼修改器

变速箱可以加快游戏节奏,节省玩家时间;或者放慢游戏节奏,降低操作难度。影响游戏帧更新频率,可以实现加速关卡、减速、隐藏技能等插件功能。有叉式传动、烧饼传动等典型代表,如下午所示。游戏比赛中使用常见的插件功能。利用传输加速功能,加快主角和怪物AI的攻击节奏,可以快速结束战斗。

叉式变速器

按键向导,模拟用户击键。简单的版本是直接记录一个固定的按键序列,然后循环模拟该按键序列。后来它被开发用于识别图像以触发特定的按键。这类典型的插件有触摸精灵、按钮精灵等,常见于笔刷部分等重复操作较多的手游中。比如在某款飞机游戏中,你可以通过按键精灵随机移动飞机来完成副本,赚取金币经验。

按钮向导

模拟器可以让玩家在电脑上运行手机游戏。这类工具运行在PC上,主流的有海马玩、天天、TGP等。由于PC有更好的鼠标和键盘操作手感,所以这类外挂工具对于FPS或者格斗手游来说非常有用。 FPS中可以快速滑动视角瞄准射击,格斗手游中可以撒娇释放连击等等。

TGP模拟器

抓包工具用于拦截游戏上下游数据包,可进行篡改、重传、丢弃。例如XXX。对于没有协议加密的游戏来说,这类外挂工具的危害性更大。例如,格斗游戏中存在下发的角色属性数据包为明文的现象。被玩家发现后,玩家直接将相应的属性修改为较大的值,以实现即时打怪的功能。该工具主要利用游戏协议中的漏洞。一方面是协议内容是否加密得好;另一方面是协议设计是否存在逻辑漏洞(重发、丢弃数据包时是否会有插件功能)。

WPE 网络数据包编辑器

3.2破解版

破解版插件本质上是非法客户端。常见的可以分为两类:离线版和小修改破解版。

离线插件是插件作者在分析游戏协议的基础上开发的一款游戏客户端。一般情况下,这类客户端可以用来开启更多直接刷副本等功能,带来的好处是巨大的。工作室对此类插件的需求较大。

这里将损坏破解版定义为损坏是因为此类破解版是在正版客户端的基础上修改实现的。与辅助插件相比,其功能不够灵活。一般一类破解版都会启用固定类型的插件功能,并且在游戏过程中无法关闭。

4.插件实现原理介绍

不同类型的插件其实现原理有很大不同。这里根据上面各个插件的分类,介绍一下大致的实现原理。

4.1 辅助

辅助插件是基于游戏客户端,动态修改游戏数据类型的插件。

4.1.1 特殊插件

https://img1.baidu.com/it/u=1066660811,3230642396&fm=253&fmt=JPEG&app=120&f=JPEG?w=500&h=667

特殊插件是定制插件,每个插件仅针对一款游戏。顾名思义,此类插件的实现方式是插件的形式:利用注入技术将功能模块注入到游戏进程空间中,并执行功能模块入口函数。在不同的移动设备上,有不同的注入方式。平台上的喷射和直喷技术;在IOS上,使用Cydia框架来注入dylib。

外挂功能模块注入游戏进程后,会进行HOOK操作,实现外挂功能。插件作者需要提前对游戏代码逻辑进行逆向分析,找到一些游戏功能函数的地址,比如怪物扣血处理函数。然后在插件功能模块中使用HOOK操作来hook对应的函数,重写参数或者调用逻辑(多次回调,或者单步调用)。

在底层汇编中,HOOK操作可以理解为在特定代码地址处添加跳转指令,跳转到插件作者自定义的函数。目前已经有封装良好的第三方库支持HOOK操作。插件作者只需要调用相应的接口函数即可实现对指定函数的HOOK操作,例如。

因此,专用助手可以灵活修改游戏代码逻辑,通过多次回调怪物的扣血函数来实现即时怪物,通过阻止玩家的扣血函数来实现无敌等。

4.1.2 通用工具

此类外挂工具与平台或游戏引擎相关,与具体游戏无关。它实现了一种跨游戏插件功能。

内存修改器的功能本质是读写指定进程的内存数据。其实现技术主要体现在如何读写游戏内存数据。它可以分为两类实现方法。一类是类似专用插件的实现方式,在游戏进程中注入通用功能模块,根据本地接收操作(查找和修改)直接遍历内存。另一种实现方式是基于平台的。加载机制是通过巧妙的技巧来实现的。例如平台下可以通过/proc//maps来读写游戏内存镜像。

齿轮箱,影响游戏时间指标。通常游戏需要以帧为单位播放屏幕。播放过程中,计算每一帧动画播放所需的时间(也可以理解为两次屏幕切换的间隔时间)。游戏需要调用C库函数获取系统时间来计算每一帧。更新。目前网上主流的游戏加速器针对不同的引擎修改了不同的Libc.so相关函数,例如。修改方法就是上面提到的HOOK实现。对于此类lic的导出功能,具体还可以有导入表HOOK等方法。

按键向导调用系统API,发送特定的操作序列,模拟用户击键。此类插件功能的实现与系统密切相关,因为其实现是通过相应的系统API发送操作事件来模拟全局击键。以上,可以通过接口的功能来实现;也可以通过ROOT权限驱动级别调用,执行.().exec()等命令。

模拟器可以让玩家在电脑上运行手机游戏。目前主要流行PC上的模拟器,具体产品有TGP、海马湾、天天等模拟器。其核心实现仍然是基于模拟系统,可以直接模拟x86架构系统。

抓包工具本质上是一个网络数据包编辑器。一类实现是基于硬件的,比如让网卡处于混沌模式来拦截数据包;另一种是利用HOOK拦截send和recv函数来获取网络数据包。

4.2破解版

破解版是提前静态修改过的独立游戏客户端。

上面提到的离线挂机一度在PC游戏中非常流行。插件作者前期逆向分析游戏的网络协议后,可以自己编写独立的第三方客户端。此类外挂技术难度较大,主要体现在游戏协议的逆向分析上。

另一种是修改游戏客户端后实现的破解版游戏。根据修改的客户端数据可以分为不同的类别:逻辑代码和数据资源。

逻辑代码:平台下逻辑代码的修改会根据游戏引擎的不同而有所不同。对于常见的cocos游戏,其逻辑代码都存储在so中,可以通过IDA等工具读取和修改。 ARM 和 THUMB 汇编指令;对于Unity游戏,其C#脚本代码存储在//bin/Data//-.dll中,也可以使用其他工具将其转换为IL代码进行修改操作。 IOS平台下,代码在app的bin文件中,与app中的so类似。你只需要知道THUMB。同样,还有Lua等代码,根据游戏语言的不同,需要进行不同的修改。直接修改汇编指令,修改空间较小。一般的实现是修改跳转和参数赋值。比如死亡判断、通关判断、扣血函数参数修改等。对IL、Lua等的修改比较简单。

数据资源:这里的资源包括除代码之外的所有游戏客户端资源,比如图片资源、配置资源、音乐资源等。有些破解版是纯粹的美化破解版,没有任何盈利,比如替换美女背景图做广告。但大多数时候,游戏逻辑的修改都是通过修改资源文件来实现的。这种实现方式需要更多的反向积累,哪些资源比较敏感可能会导致插件功能。一旦找到,如何修改也是一个技术难点。有些游戏安全性不够,以明文形式存储资源文件很方便不法分子修改;然而,许多资源或多或少都经过加密。这里介绍两种常用的替换资源破解版的实现方法:无脑替换和分析调试。

无脑替换,不管怎样,尝试删除资源文件或者替换为空的,甚至重命名同类型的资源文件来覆盖。这种方法实现的插件和修改器插件的数量几乎是一样的。一方面,游戏的安全性不足;另一方面,此类插件的实现相对简单。例如,在某飞机游戏中,删除子弹资源可以达到敌机没有子弹的效果;而在某款酷跑游戏中,将某个XXX_1配置文件覆盖成其他具有相同前缀(XXX_2、XXX_3...)的配置文件可以降低关卡难度等。

分析调试,此类实现与替换方式效果相同,但前期通过静态分析或动态调试分析来确认资源的功能和加密方式。

由于在手机游戏中,客户端资源中总是存储有逻辑相关的数据,因此这种方法总是有效的。

本文普及有关手机游戏外挂的知识,旨在让相关行业从业者认识到手机游戏的安全问题,并以此为出发点进行深入思考,推动行业技术的发展。
页: [1]
查看完整版本: 移动游戏市场外挂问题解析:影响、类型及防范措施