关于Android游戏助手

600 阅读4分钟

游戏助手是什么

终于开始这个系列的填坑了,自上次17年写的文章《LuaJava在Java、Android中的使用》 已经过了2年,主要介绍了游戏助手技术栈的其中一项。本文开始将继续记录一些项目中碰到的问题和有价值的经验。项目坟头都长草了祭奠一下。

心塞.jpg

这里游戏助手主要指的是Android端的应用,虽然iOS端也有能够实现的方案,但是成本较高且本人对iOS技术钻研不精,所以不做讨论。

游戏助手是什么,用我的定义来说,就是

  1. 能帮助玩家自动的去完成一些冗余重复的工作,例如挂机刷金币,
  2. 或者是增强补充游戏内的某些功能,例如魔兽世界伤害统计的辅助工具软件。

下图展示的是穿越火线手游自动操作塔防。

cf自动游戏.gif

王者荣耀自动刷冒险设置。

王者荣耀自动刷冒险设置.png

这里可能有人会说“这不就是WG嘛”,对的,这东西俗称其实就是WG,但是在这里不讨论什么“道德伦理”问题,技术本身没有好坏,关键在于怎么去使用它。

在移动端实现游戏助手辅助功能主要有两个流派,以是否读写内存作区分:

  • 不读写内存

不读写内存.jpg

  • 读写内存

读写内存.jpg

市面上的产品

18年再往之前,可以说是这个领域的黄金时期,有着各式各样的种游戏辅助软件,其中时间较长用户规模也比较大的有叉叉助手,还有在末期才出现的游戏超人等,我研究比较多的也就这俩,下面也就拿这两家和我厂的产品来介绍。

产品 是否需要root 是否读写内存 核心技术
叉叉助手 有root和非root版本 高权限adb shell
游戏超人 不需要 悬浮窗、美工
我厂AY 不需要 沙箱虚拟化

叉叉助手

叉叉助手是行业内最有资历的产品,所以后面才被杀鸡儆猴,最早应该是在PC端有不少的资源,后续转战移动端,拥有自己的脚本开发者生态圈,这一点是令人向往的。

叉叉助手.jpeg

叉叉助手支持手机root和非root使用,核心技术是通过获取adb shell的权限,启动自己的守护和工作进程,通过进程间通信实现屏幕的截图和模拟点击等操作,属于上文说的不读写内存的流派1。

root的情况下就不说了,什么事情都能干,但是用户群比较小;非root的情况就比较复杂,需要引导用户在PC端上下载“钥匙应用”进行APP的“激活”,本质上就是利用手机与pc端的adb连接,来启动手机的shell进程获取权限。

游戏超人

游戏超人应该是猎豹做的一款辅助,我知道它的时候已经是末期了,给我的第一印象就是UI很好看很精细,~~不像我厂的产品很多UI都是我自己动手的,~~它提供的功能也比较简单,基本都是游戏界面美化之类的,从下图也可以看出。

游戏超人.jpeg

经过分析发现,其实它的核心实现非常简单,就是悬浮窗,剩下的就是怎么制作这些美化UI和这些UI怎么去适配游戏和屏幕分辨率的问题了。

我厂的游戏助手-AY

我厂的游戏助手项目简称AY好了,这里不方便透露名字。AY的实现方式集合了上文的两种流派来实现的。

AY.jpg

AY依靠分身(沙箱)SDK提供的沙箱环境和多个hook接口,实现了对内存的读写,这里主要是为了实现上文的“输出模拟点击”部分;同时使用Android5.0提供的屏幕录制接口,实现“获取屏幕截图”部分。

这种方式可以结合两种流派的优点,可以在免root的情况下,不需要像叉叉助手一样复杂的用户引导流程,又可以实现对第三方应用的输出模拟点击,所以AY能比同类产品有更强的能力去做更多的事情,后续的产品迭代也证明了这点。

后记

到了19年之后就开始这些产品就开始凉了(包括我厂的项目),原因有很多,主要因腾讯加强了对作弊的打压,反作弊SDK不断升级攻防难度加大,投入不抵产出,更主要的原因是政府层面出手打压这块产业,其中最惨的就是叉叉助手,《叉叉助手公司被查!案值数亿元,也成全国首例违法脚本公司》

默哀.jpg

虽然产业消亡了,但是还是沉淀不少的技术,也许未来还能有用武之地的,例如在自动化测试等...