以我微薄经验敬献上:各类游戏辅助揭秘及浅见

说实话,踟蹰许久!因为对于游戏工作室这个群体来说,我只是一个在其中挣扎了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文件粉碎据说是易语言开发的不管你信还是不信,反正我是不信),一个用来干坏事比干好事人还多的软件,一个说出大名就让人觉得是游戏Wg的软件,一个中国人编写的软件,一个可全中文编译并运行的开发语言。

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

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

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

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

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

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

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

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

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

封包类:的辅助需要截取游戏发送过去的封包,也就是说你必须先完成一次这样的操作才能知道这个封包的结构是怎么样的,而且封包大多都有加密,你又需要想办法解密它的封包,差之毫厘,就会错之千里.游戏对于发送封包的地方都会有严格的把手,因为一旦你完全解析一款游戏的封包后,你就做到一个非常牛逼的功能,不用打开游戏客户端就可以挂游戏了,是不是想想都觉得可怕,当然游戏公司会在客户端中添加各种验证,不会让你出现这种一台E3只要网络好就能挂他妹的几千个号的情况。

内存类:的辅助其实就可以满足绝大多数情况了,但是内存辅助需要读取游戏中的数据,调用游戏中的函数,而windows是一个进程分离且互不干扰的系统,要如何在你的辅助里面读取到别的游戏进程的数据呢,一般有两种方法,你的辅助做成一个DLL文件注入到目标进程中,相当于辅助变成游戏的一条手臂,手臂看看躯干的东西就轻而易举了,另外一种就是挂载的方法,你的进程挂载到游戏上,像攀上一个亲戚一样,变成游戏的儿子了,看看老子的东西虽然要费些周折,但始终是可以看到的。

图色类:的辅助我想开发初衷就是由于以上两种封号太严重或者太难于制作,所以另辟蹊径,我不做你的儿子也不做你的手臂,更不动你的东西,你的游戏想要让玩家使用怎么也得显示在屏幕上吧,我通过截取屏幕的显示来得到你的画面,你游戏想要让玩家体验就得取得玩家的按键和鼠标操作吧,你在哪里拿到玩家的操作我就虚拟个假的操作放在那里,等你自己来拿,以封号严重程度划分,封包>内存>图色

封包类:游戏的封包是每秒几十上百甚至上千的,有幸找到了其中需要的功能封包,也解析出来了,正当暗自窃喜,妈的我一台E3可以整几千个号啊,从此金钱如滔滔江河滚滚而来,迎娶白富美,走上人生巅峰.结果没想到啊.游戏公司那帮人也不是吃干饭的,几百个封包中有1,2,3,4或者...个封包是需要和这次封包一起发送的,你没有发送,封得哭爹喊娘,本想万丈锋芒行,闹得妻离与子散,我本屌丝蓬垢面,从此女神是路人。

内存类:上面已经提到了两种方法,不过游戏已经有两条手臂了,突然有一天发现妈的怎么多出来一条,不科学啊.....

图色类:下有对策,上有方针,你不经过我而去找windows系统?我先去找找它,把关键地方全部挂上我的钩子,你的程序全部要经过我这里,到时候我就检测下是不是安全的,有没有搞什么乱七八糟的事情,以运行稳定性划分,封包>内存>图色。

封包类:为什么封包类又叫做脱机类呢,因为他够稳定,不会因为游戏进程的各种奔溃而导致出错,游戏公司也极少的更改游戏封包发送方式,内容,你找到一次,就可以稳定的运行很久了,速度快,轻便,不易出错.可以让你脱离机器去做别的事情。

内存类:游戏找到了数据以后,游戏是一个大型的程序,是不会轻易重新编译一次的(不重新编译就不会更改基址),就算有一些小的更改,添加新的功能,也只是在各个DLL模块中更改,以后都可以快速的定位游戏小更改的地方,到时候只需要在源代码中更改下数据就OK了,而且读取游戏数据,调用游戏函数会有高精准性,你需要在血量低于100的时候加血,你需要移动到220,112的坐标去都是极不容易出错的可以这样说,只要这个辅助编写者逻辑正确,没有错误,内存类的辅助也可以做到极少甚至0人工,一个总的控制台来管理各个机器的子辅助,子辅助管理好每个进程游戏。

图色类:这类辅助也是褒贬两极最明显的了,因为一款好的图色类辅助需要作者掌握的知识和经验绝对不比内存和封包少(不要以为学几个月按键精灵或者大漠就能写好了),最基本的需要有很好的流程控制能力,掌握很多算法图色不比内存,想要精度高,就要看你的算法给不给力了,什么是算法?就是计算的方法,游戏屏幕是一张图片,你需要查找的东西是一张图片,你如何在其中最快速的查找到需要查找的点,有相同的怎么办有遮挡怎么办,图片是动的怎么办?这些叫什么? 高大上点叫做机器视觉,什么是机器视觉?擎天柱能够不把大黄蜂和威震天搞混那就是机器视觉.当然做个辅助不需要这么牛逼的技术,但是你得知道个大概啊还需要学习下游戏是怎么渲染的,模型怎么显示的,学来干嘛?黑屏优化啊,游戏模型变换啊,当然以上两种需要掌握的东西也肯定是不会少的。

总总总结:恩,大概主要内容就是以上这些了,此篇投稿希望能得到个NBE论坛的邀请码,在下不才,以上只是一些个人见解,不知正确与否,不知影响如何,文笔欠佳,内容缺沉乏新,只能检索再三,勿留错字,只望起抛砖引玉之作用,能拜读后来大神老鸟之作品恩,又想起一首喜欢的词章,一并附上:

三尺微命,一介书生。无路请缨,等终军之弱冠;有怀投笔,慕宗悫之长风。舍簪笏于百龄,奉晨昏于万里。非谢家之宝树,接孟氏之芳邻。他日趋庭,叨陪鲤对;今兹捧袂,喜托龙门。杨意不逢,抚凌云而自惜;钟期既遇,奏流水以何惭?呜乎!胜地不常,盛筵难再;兰亭已矣,梓泽丘墟。临别赠言,幸承恩于伟饯;登高作赋,是所望于群公。敢竭鄙怀,恭疏短引;一言均赋,四韵俱成。请洒潘江,各倾陆海云尔!

相关阅读:

按键精灵小作者,讲述自己学写脚本的故事

入门脚本作者浅谈:学习的游戏Wg编程那些事

我做游戏Wg这三年(一)初入游戏Wg这个行业

以上是 以我微薄经验敬献上:各类游戏辅助揭秘及浅见 的全部内容,来自【游乐园】,转载请标明出处!

回到顶部