结合上述分析,可以给出一个更适合当前手游安全状况的外挂定义:破坏游戏客户端正常数据和代码逻辑,或者篡改操作的工具或破解版。游戏客户端的状态。
插件分类
手游中已经出现了大量的外挂样本。根据其特点,可以组织分类图如图所示。
插件分类
插件可以分为两类:辅助版和破解版。这两类插件的核心区别在于是否需要依赖游戏客户端。辅助插件需要与游戏客户端配合运行;而破解版是非法客户端,可以独立运行。
1. 辅助
辅助插件需要依赖游戏客户端,无法自行生效。根据其范围又可以进一步分为两个小类:专用插件和通用工具。
1.1 特殊插件
特殊插件插件,只针对特定游戏,属于定制化插件。它的存在形式根据不同的平台而不同。 Android下是SO形式,IOS下是dylib形式。例如Android上流行的查查、圈圈助手就是专用插件的典型例子。集成了多种Android手游功能插件,针对不同的手游注入不同的SO来实现插件功能。类似的888辅助也出现在iOS上,为众多热门手游注入不同的Dylib,实现无敌、即时打怪的功能。这种特殊插件的插件功能比较灵活,一般可以随时关闭或开启。
圆修饰符
1.2 通用工具
顾名思义,万能工具适用于所有手机游戏,支持通用功能。
内存修改器,用于搜索和修改游戏内存数据。在Android平台上比较主流,典型代表有烧饼、葫芦侠等,如下图所示。玩家一般使用修饰符根据游戏面板中的精确数据来搜索对应的值,然后进行多次搜索排除,根据值的变化规律定位到对应属性在内存中的位置,并直接修改为夸张的效果值。后期还有各种变体,比如模糊搜索,只通过把数据做大、做小来进行搜索;加密搜索,具有反简单加密(异或加密等)功能的搜索。这类修改器插件,常见的插件功能就是改变角色属性,实现瞬间打怪、无敌等。
烧饼修改器
变速箱可以加快游戏节奏,节省玩家时间;或者放慢游戏节奏,降低操作难度。影响游戏帧更新频率,可以实现加速关卡、减速、隐藏技能等插件功能。有叉式传动、烧饼传动等典型代表,如下午所示。游戏比赛中使用常见的插件功能。利用传输加速功能,加快主角和怪物AI的攻击节奏,可以快速结束战斗。
叉式变速器
按键向导,模拟用户击键。简单的版本是直接记录一个固定的按键序列,然后循环模拟该按键序列。后来,它被开发用于识别图像来触发特定的按键。这类典型的插件有触摸精灵、按钮精灵等,常见于笔刷部分等重复操作较多的手游中。例如,在某款飞机游戏中,您可以使用按钮向导随机移动飞机,通过完成地下城来赚取金币经验。
按钮向导
模拟器可以让玩家在电脑上运行手机游戏。这类工具运行在PC上,主流的有海马玩、天天、TGP等。由于PC有更好的鼠标和键盘操作手感,所以这类外挂工具对于FPS或者格斗手游来说非常有用。 FPS中可以快速滑动视角瞄准射击,格斗手游中可以撒娇释放连击等等。
TGP模拟器
抓包工具用于拦截游戏上下游数据包,可进行篡改、重传、丢弃。例如XXX。对于没有协议加密的游戏来说,这类外挂工具的危害性更大。例如,格斗游戏中存在下发的角色属性数据包为明文的现象。被玩家发现后,玩家直接将相应的属性修改为较大的值,以实现即时打怪的功能。该工具主要利用游戏协议中的漏洞。一方面是协议内容是否加密得好;另一方面是协议设计是否存在逻辑漏洞(重发、丢弃数据包时是否会有插件功能)。
WPE 网络数据包编辑器
2.破解版
破解版插件本质上是非法客户端。常见的可以分为两类:离线版和小修改破解版。
这里将损坏破解版定义为损坏是因为此类破解版是在正版客户端的基础上修改实现的。与辅助插件相比,其功能不够灵活。一般一类破解版都会启用固定类型的插件功能,并且在游戏过程中无法关闭。
插件实现原理介绍
不同类型的插件其实现原理有很大不同。这里按照上面的分类介绍一下各个插件的大致实现原理。
1. 辅助
辅助插件是基于游戏客户端,动态修改游戏数据类型的插件。
1.1 特殊插件
特殊插件是定制插件,每个插件仅适用于一款游戏。顾名思义,此类插件的实现方式是插件的形式:利用注入技术将功能模块注入到游戏进程空间中,并执行功能模块入口函数。在不同的移动设备上,有不同的注入方式。 Android平台上的Zygote注入和直接ptrace注入技术;在IOS上,使用Cydia框架来注入dylib。
因此,专用辅助可以灵活修改游戏代码逻辑,通过多次回调怪物的扣血函数实现即时打怪,通过屏蔽玩家的扣血函数实现无敌等。
1.2 通用工具
此类外挂工具与平台或游戏引擎相关,与具体游戏无关。它实现了一种跨游戏的插件功能。
内存修改器的功能本质是读写指定进程的内存数据。其实现技术主要体现在如何读写游戏内存数据。它可以分为两类实现方法。一类是类似专用插件的实现方式,向游戏进程中注入通用功能模块,根据本地socket接收操作(查找和修改),直接遍历内存等;另一种实现是基于平台加载机制,通过巧妙的技巧来实现。例如,Android平台上可以通过/proc/[pid]/maps来读写游戏内存镜像。
齿轮箱,影响游戏时间指标。通常游戏需要以帧为单位播放屏幕。在播放过程中,计算每一帧动画所需的时间(也可以理解为两屏之间的间隔)。游戏需要调用C库函数获取系统时间来计算每一帧。更新。目前网上主流的游戏加速器针对不同的引擎修改了不同的Libc.so相关函数,例如gettimeofday、clock_getime等。修改方法就是上面提到的HOOK实现。对于此类lic的导出功能,具体还可以有导入表HOOK等方法。
按键向导调用系统API,发送特定的操作序列,模拟用户击键。此类插件功能的实现与系统密切相关,因为其实现是通过相应的系统API发送操作事件来模拟全局按键。在Android上,可以通过Instrumentation接口的sendPointerSync函数来实现;也可以通过ROOT权限驱动级别调用Runtime.getRuntime().exec()来执行sendevent等命令。
模拟器可以让玩家在电脑上运行手机游戏。 PC端模拟器中,目前最流行的是Android模拟器,具体产品有TGP、海马湾、天天等模拟器。其核心实现仍然是基于VirtualBox来模拟Android系统,可以直接模拟x86架构的Android系统。
抓包工具本质上是一个网络数据包编辑器。一类实现是基于硬件的,比如让网卡处于混沌模式来拦截数据包;另一种是利用HOOK拦截send和recv函数来获取网络数据包。
2.破解版
破解版是提前静态修改过的独立游戏客户端。
另一种是修改游戏客户端后实现的破解版游戏。根据修改的客户端数据可以分为不同的类别:逻辑代码和数据资源。
逻辑代码:Android平台下逻辑代码的修改根据游戏引擎的不同而有所不同。对于常见的cocos游戏,逻辑代码存储在so中,ARM和THUMB汇编指令可以通过IDA等工具读取和修改;对于Unity 游戏,C# 脚本代码存储在/assets/bin/Data/Managed/Assembly-CSharp 中。 dll,也可以使用ildasm等工具将其转换为IL代码进行修改操作。 IOS平台下,代码在app的bin文件中,与Android中的so类似。你只需要知道THUMB。同样,还有Lua等代码,根据游戏语言的不同,需要进行不同的修改。直接修改汇编指令,修改空间较小。一般的实现是修改跳转和参数赋值。比如死亡判断、通关判断、扣血函数参数修改等。对IL、Lua等的修改比较简单。
数据资源:这里的资源包括除代码之外的所有游戏客户端资源,比如图片资源、配置资源、音乐资源等。有些破解版是纯粹的美化破解版,没有任何盈利,比如替换美女背景图做广告。但大多数时候,游戏逻辑的修改都是通过修改资源文件来实现的。这种实现方式需要更多的反向积累,哪些资源比较敏感可能会导致插件功能。一旦找到,如何修改也是一个技术难点。有些游戏安全性不够,以明文形式存储资源文件很方便不法分子修改;然而,许多资源或多或少都经过加密。这里介绍两种常用的替换资源破解版的实现方法:无脑替换和分析调试。
无脑替换,不管怎样,尝试删除资源文件或者替换为空的,甚至重命名同类型的资源文件来覆盖。这种方法实现的插件和修改器插件的数量几乎是一样的。一方面,游戏的安全性不足;另一方面,此类插件的实现相对简单。例如,在某飞机游戏中,删除子弹资源可以达到敌机没有子弹的效果;而在某款酷跑游戏中,将某个XXX_1配置文件覆盖成其他具有相同前缀(XXX_2、XXX_3.)的配置文件可以降低关卡难度等。
分析调试,此类实现与替换方式效果相同,但前期通过静态分析或动态调试分析来确认资源的功能和加密方式。
由于在手机游戏中,客户端资源中总是存储有逻辑相关的数据,因此这种方法总是有效的。
标签:
用户评论
这骗子真是防不胜防,鸡王陨落了,手游还能不能玩了?
有6位网友表示赞同!
鸡王陨落,外挂横行,手游行业得好好整顿整顿了。
有8位网友表示赞同!
外挂分类及原理剖析得挺到位,但感觉现在手游外挂越来越高级了。
有12位网友表示赞同!
鸡王陨落,希望这次能真正杜绝外挂,让游戏回归公平。
有16位网友表示赞同!
手游外挂分类挺有意思,不过感觉作者对原理解释得不够详细。
有7位网友表示赞同!
骗子横行,鸡王陨落,这种风气不改,玩家都流失光了。
有16位网友表示赞同!
深入剖析手游外挂,看来作者是个游戏老玩家,对行业了解挺深。
有14位网友表示赞同!
外挂原理分析得挺透彻,但我觉得手游外挂的源头还是监管不力。
有6位网友表示赞同!
鸡王陨落,但外挂问题还是存在,希望作者能继续关注。
有11位网友表示赞同!
外挂分类挺全面,不过感觉手游外挂的打击力度还是不够。
有9位网友表示赞同!
手游外挂的分类及原理,让我这个新手玩家也学到了不少。
有18位网友表示赞同!
鸡王陨落,外挂横行,真是让人对手游行业失望至极。
有6位网友表示赞同!
深入剖析手游外挂,作者的分析让我对游戏行业有了新的认识。
有6位网友表示赞同!
外挂分类挺详细,但我觉得手游外挂的根源还是在于游戏设计。
有12位网友表示赞同!
鸡王陨落,外挂问题不解决,手游行业怎么可能有未来?
有19位网友表示赞同!
手游外挂分类及原理,这文章让我对游戏行业有了更深的了解。
有7位网友表示赞同!
骗子横行,鸡王陨落,希望这次能真正让外挂无处遁形。
有13位网友表示赞同!
深入剖析手游外挂,作者的分析让我对游戏行业有了新的认识。
有13位网友表示赞同!
外挂问题不解决,手游行业真的要完了,鸡王陨落只是个开始。
有7位网友表示赞同!
手游外挂的分类及原理,这篇文章写得很有深度,推荐给其他玩家看看。
有9位网友表示赞同!