首先我们科普一下外挂的定义(自己总结非官方):能够修改目标程序原有的行为或数据的第三方程序。其中最常见的目标程序就是网络游戏客户端。一直以来,网络游戏开发商以及运营商与外挂开发者之间的对抗,从未停止过。正所谓,八仙过海各显神通。在对抗的过程当中,双方都有一定的收益,在利益的驱使下,双方都竭尽所能使用更高端的技术完成攻与防的内容。
正所谓,知己知彼百战百胜。我们作为专业的反外挂开发商,非常有必要了解各种常见游戏外挂所采用的技术。只有知道了他们的原理,我们才能想出对抗外挂的技术方法。下面列出我们在十数载反外挂研究中发现的外挂技术种类(不全之处,还拿知望补充)。
一.脱机类外挂
在游戏开发过程中,每款游戏的客户端与服务端都会有固定的通信格式,大部分游戏通信协议位于TCP层之上,自定义的数据结构,外挂开发者们称此为封包。下面简单列举一个简单的打斗封包,以方便说明脱机类外挂原理。
0000ABCD 0000DCBA 00001234 00001000
例如玩家1在与玩家2打斗过程中,发送到服务器这样一个16字节的数据包,其中游戏开发者定义此数据包含义如下:
0000ABCD:玩家1的ID。
0000DCBA:玩家2的ID。
00001234:玩家1所使用的技能编号。
00001000:玩家1对玩家2造成的伤害,转换为十进制为:4096。
当服务器接收到此数据包时,则会将玩家2的血量减少4096点,如果玩家血量减少后小于等于0,则判定为玩家2已经阵亡。这时服务器会返回给玩家2的客户端一个数据包,玩家2的客户端则播放一个玩家2已经死亡的动画。
以上逻辑,其实存在着大量的漏洞,比如说,服务器应该判定玩家上一次释放00001234号技能是否在冷却时间内,再比如说,服务器应该判定玩家战斗过程中所造成的伤害是否与其装备、法力值、攻击力、暴击等相吻合,是否超过了游戏本身限制的最大伤害。类似这种漏洞,每一款游戏都会存在,只不过不会这么明显。一些老游戏在这方面做的相对较弱,所以漏洞更多。
另外,在游戏开发过程中橘模,数据通信的格式在游戏开发商的公司中都有相关文档明确定义的。而这些文档非常机密。一些游戏开发商公司的安全做的不够好的情况下,可能会造成游戏代码以及文档的泄露。这些资料,一旦流入外挂开发者手中,那么这款游戏就极有可能会出现脱机式外挂。
脱机外挂定义:在不开启游戏客圆敏缓户端的情况下,第三方程序直接与游戏服务器进行通信,模拟账号登陆验证、选择角色、进入游戏、进入场景、开始战斗、对怪物造成伤害等 *** 作时的合法数据包,发送给服务器,而服务器是没有能力判断出这些包是否是客户端发来的,即便有验证手段,由于源码已经泄露,外挂开发者可以轻而易举的模拟出服务端的各种验证机制。即便数据包传送过程中是加密的,由于源码外漏,外挂开发者一样可以正确模拟出数据包的加密方式。
对于这种类型的外挂,常见的屏蔽手段就是修改加密方式,使得脱机外挂发送过来的数据包,服务端无法解析,或者解析出的结果是错误的,而服务端发现客户端发送错误的数据包时,则断开连接。此方法,需要客户端与服务端同步更新。改动较大。
还有一种常见方法,是在客户端中嵌入一些验证性代码,与另外一个专门负责验证的服务端通信,客户端必须正确作答后,服务端方可认为是合法客户端发来的数据包。此类反外挂方式,我们也会经常见到,比如一些游戏中为防止挂机行为而加入的答题机制。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)