游戏工作室

辅助作者亲笔:各类游戏辅助揭秘及浅见(上)

游戏工作室 2017-02-23

说实话,踟蹰许久!因为对于游戏工作室这个群体来说,我只是一个在其中挣扎了2年的小菜鸟而已,各类游戏防封,防检测,出金路线的摸索等等,对于我来说若在云端,若在雾里,自以为是的认为能够把握住它,但就像是这片汪洋中的一片浪花,起于波澜,也止于波澜。人的贪心和愤慨也许就在这起伏不定的变化中滋生和助长,只有高中文化的我毅然走上了辅助作者这条路。

伏伏没有起起的又一个两年,为了NBE论坛万恶的邀请码,仅以我微薄的经验为大家敬献上其中的弯折。

对于游戏辅助,个人见解大致分为3个类别:

 (一):图色类,代表工具:按键精灵,TC,大漠插件。下面一一为大家道来,

1:按键精灵,这个可以说"家喻户晓"了吧,有一次一个80年代的游戏玩家告诉我,他使用的第一个游戏辅助就是自己使用按键精灵做的工具,功能就是不停的在魔兽世界里面点点点(=,=!),作为图色类的鼻祖,它的功能不是最强大的,但却是一款非常方便简洁的工具,不管是其中的脚本录制功能(录制一段你的鼠标操作,之后可以重复这段动作进行操作).还是中文的界面,帮助文档,0基础的快速开发,封装函数的方便调用,都是令人映像深刻的.不过有好就有坏,作为图色类的开发工具,其中的各种函数调用对于游戏公司来说都不陌生,鼠标键盘的模拟也只是使用的windows消息方式,这对于大部分直接IO端口读取的游戏来说根本不会处理你发送的消息,截图的方式也仅仅只是windows下画图中常用的屏幕截取,面对如今游戏公司的各种防护来说力有不逮。

2:TC,对于这款开发工具,个人见解唯一的亮点就是代码可以支持中文了吧,界面完全模仿微软的VS,函数的封装也类似按键精灵试用过几天就放弃了,更详细的原理不得而知。

3:大漠插件,这个相信大家也不陌生了,一款非常强大的插件,作为一个windows的COM组件来说,可以在多个开发语言中使用它,并且保持非常好的兼容性,因为支持COM组件也是检测一个开发语言是否合格最基本的条件了吧(个人认为).大漠不断的在升级之中(目前是6.+版本了,作者真是赚翻了,小小估计一下怕是不下千万的资产了吧),我只用过3.1233这个免费版本,相比于按键精灵的单调和赤裸裸大漠可谓是藏在深山里的苍狼,隐蔽的调用方式,网络验证会员功能,代码的加壳,多种多样的调用方式让人目眩神迷的.大致来说分为二个模式,windows(GDI)模式,这个同按键精灵,采用发送消息处理方式.dx模式,这个模式下大漠插件会挂钩游戏的directX函数(这是游戏能够有这么绚烂的画面以及微秒级别响应鼠标键盘的根本),大漠会把鼠标键盘的操作直接发送到挂钩的DirectX函数里面,所以绑定的窗口是不能接收玩家自己的按键的。

总结:图色类的辅助大致是通过得到当前屏幕的画面,然后对比需要查找的图片以判断需要进行什么操作,发送键盘或鼠标的消息到游戏中模拟操作以达到玩家不可告人的目的。

(二):内存类,代表工具:易语言,C/C++

1:易语言,如果按键精灵让游戏公司眉头紧锁,那易语言应该会让他们焦头烂额吧.如果你告诉我你不知道这是神马? 那让我来告诉你吧,它是一个360都封杀的软件(早期的360文件粉碎据说是易语言开发的不管你信还是不信,反正我是不信),一个用来干坏事比干好事人还多的软件,一个说出大名就让人觉得是游戏外挂的软件,一个中国人编写的软件,一个可全中文编译并运行的开发语言。

虽然它承袭自C,虽然它速度缓慢,虽然它不被正统所认为.但是,它代表的是一种进步,一种发展,一种可以让小学,初中,高中生们更容易接受和学习平台,我不知道多少年以后中国可以有一款真正属于中国的编程语言,但我相信这款语言载入史册的时候,它的前面定然有一章篇章是属于易语言的,我想孔子所说的"举而措之天下之民,谓之事业"莫过于此了吧。

2:C语言,这是神话,无需多言。这让我想起了18世纪的一句名言,"欧洲有六大强国:大不列颠英国、法国、俄罗斯、奥匈帝国、普鲁士和罗斯柴尔德!"。

内存原理:内存辅助的原理是通过读取游戏进程内的数据,比如人物的血量,坐标,怪物名字,好友等等,以此来判断当前需要进行什么操作,操作不外乎移动,使用道具(技能这些都可以看作特殊的道具),与物体进行交互(打怪什么的),而这些操作在游戏公司的源代码里面就是一个个需要执行的函数,我们只要找到函数的地址(位置),就可以使用它们了(正向的使用函数叫做调用,而调用的本质就是一条名叫"CALL"的汇编代码,所以找函数的位置又叫做找CALL,找到这个CALL调用)

总结:内存类辅助大致是通过读取到游戏数据,以判断当前需要执行什么操作,调用游戏本身具有这个功能的函数让它做一遍这个操作。

(三):脱机类,又名封包类,代表工具:易语言,C/C++

原理:我们玩的是网络游戏,需要连接上游戏公司的服务器进行通信,服务器保存有我们的各种数据血量,坐标,金币什么的,为什么本地保存一份服务器保存一份呢? 防止玩家直接修改本地的客户端数据达到作弊的可能,有两份数据后,游戏可以对比后以服务器的数据为准,更新本地的数据为什么要保存坐标呢?

因为服务器通过知道每个玩家的坐标以确定你这个游戏人物是在哪个位置,方便他显示给其他玩家看。问题来了,我们本地是如何把数据传输给服务器的呢,这就要用到封包了,你可以理解为游戏把你的血量或者你的操作等等以某种特定的格式包装起来(包里面有游戏公司的地址,用以确认发送到哪里去,有你本地的地址,用以接受他发送过来的数据),这种包装后的成果就叫做封包了。

总结,封包类辅助大致是通过截取各种发送出去的封包,封包里面不仅有血量等等这些基本信息,还有移动,买卖物品,攻击怪物等等玩家操作信息(想象下你如果移动一下他不对比下服务器数据那你不就可以一下瞬间移动一大截了吗).我们模拟它发送的封包,制造假的封包发送过去,就可以达到操作游戏角色的目的了。

总总结:对比下三大类辅助的优缺点,以制作难易度来划分,封包>内存>图色

未完待续........

相关阅读:

入门脚本作者浅谈:游戏脚本制作原理

想成为游戏辅助脚本作者 按这个流程从零开始学习

【学写外挂必看感悟】一个外行游戏辅助作者的写挂经历