王者辅助王者辅助

欢迎光临
我们一直在努力

王者荣耀外挂/你应该了解的手游外挂实现原理

外挂实现原理简介

不同类型的外挂,其实现原理相差较大。这里根据上述每个外挂分类介绍下其大致实现原理。

4.1 辅助

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

4.1.1 专用插件

专用插件类外挂,属于定制化外挂,每个外挂只针对一款游戏。这类外挂的实现顾名思义,是插件形式:利用注入技术将功能模块注入到游戏进程空间中,并执行功能模块入口函数。在不同的移动设备上,有不同的注入手段。Android平台上的Zygote注入、直接ptrace注入技术;IOS上利用Cydia框架注入dylib。
外挂功能模块在被注入到游戏进程后,会执行HOOK操作实现外挂功能。外挂作者事先需要逆向分析游戏代码逻辑,找到一些游戏功能函数地址,比如说怪物扣血处理函数。然后在外挂功能模块中通过HOOK操作,挂钩相应函数,改写参数或者调用逻辑(多次回调,或者步调用)。
在底层汇编,HOOK操作可以理解为在特定代码地址,增加个跳转指令跳转到外挂作者自定义函数中。目前已经有封装优秀的三方库支持HOOK操作,外挂作者只需要调用相应接口函数,即可实现对指定函数进行HOOK操作,如substrate。
因此,专用辅助可以很灵活修改游戏代码逻辑,通过多次回调怪物扣血函数实现秒怪、通过屏蔽玩家扣血函数实现无敌等。

4.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上运行手游。PC上的模拟器,目前主要流行的是Android模拟器,其具体产品有TGP、海马玩、天天等模拟器。其核心实现,还是基于VirtualBox模拟Android系统,可直接模拟x86架构的Android系统。
抓包工具,本质是网络数据包编辑器。一类实现方式是基于硬件,比如让网卡处于混乱模式,即可拦截数据包;另一类则是通过HOOK,针对send和recv类函数进行拦截,获得网络数据包。

4.2 破解版

破解版是通过事先静态修改后的独立的游戏客户端。

前面提到的一种脱机挂,在端游上盛行一时。外挂作者前期逆向分析了游戏的网络协议后,可自己编写独立三方客户端。这类外挂技术难度较高,主要体现在逆向分析游戏协议上面。
另一类则是对游戏客户端修修改改后实现的游戏破解版。可以根据修改的客户端数据不同分类:逻辑代码和数据资源。
逻辑代码:Android平台下逻辑代码的修改,根据游戏引擎不同,改的东西也有所区别。常见的cocos游戏,其逻辑代码保存在so,可通过IDA等工具读取修改ARM、THUMB汇编指令;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...)中,可实现关卡难度降低等。

分析调试,这类实现效果和替换法一样,但其前期是通过静态分析或者动态调试分析确认资源的作用和加密方式。

由于手游中,总有逻辑相关数据是存放到客户端资源上面,所以此类方法百试不爽。

文章来源:腾讯Gslab游戏安全实验室

更多游戏安全知识及资讯不定时更新,快点个关注吧~


未经允许不得转载:王者辅助 » 王者荣耀外挂/你应该了解的手游外挂实现原理
分享到: 更多 (0)