美文网首页
游戏防外挂处理

游戏防外挂处理

作者: Luxin23 | 来源:发表于2019-03-30 22:15 被阅读0次

    游戏外挂一般出现在几种人手里,一种是内部人员,这类人是最了解游戏的,写出的外挂又稳定又不会被检测出来被封号。一种是专业写外挂的程序员,写外挂对于他们来说,轻车熟路。还有一种就是大佬,随便研究就能写出外挂的。

    处理游戏外挂,我接触过的如下简单几种方法。

    合法客户端验证,大多数游戏都是使用tcp这种可靠的面向连接的协议。那么我们在建立起连接后对客户端进行合法验证,如果此客户端是非法客户端,那么直接关闭此连接即可。

    当时我做的比较简单。服务器生成一个加密的数据包,发给客户端,客户端解密了之后在发上来,服务器做验证,具体详细做法此处不再细讲。

    序列化协议。因为有的人他是在用你合法的客户端在登陆游戏,即使我们的数据包经过压缩打包之后。内容相同的数据包,最后的二进制串是相同的。这样细心的人比较容易发现我们这个数据包是干嘛的?他们可以试用wpe这类的工具截获我们的数据包修改之后并重新发给服务器,这样也能够高效率的操作。

    对于这种情况,第一种方案可以采用序列化协议,就是我给每一个协议加一个id。这样只有合法的客户端知道真实的id是什么?这样子你靠wpe这类的工具自动化给服务器发协议,基本不可能,除非你手工修改协议包或者另外写程序修改协议包,要能准确的知道真实的id,这个不是一件简单的事情。

    另外一种就是对协议数据包进行加密,这里如果是对称加密的话,意义不大。对称加密的特点就是相同的内容,加密出来的数据包是一样的。这里可以试用非对称加密,但是如果使用RSA这种方案。有点杀鸡用牛刀的感觉,而且对服务器压力巨大。

    可以自己实现一套伪非对称加密算法,只要相同的内容,经过这套算法加密出来,最后的数据包都不一样即可。这样的做法简单,算法可控。服务器压力也不大,也达成了我们的目标。

    对于这种伪非对称加密算法,可以这样子做。我们先实现套伪随机数生成函数,通过设置相同的随机种子,经过一定次数的运算。服务器和客户端生成的随机数是相同的,按照规则把这些随机数插入到数据包中,最后在补齐数据包为16的整数倍即可,这样子即使数据一样,最后生成的每个数据包都看着不一样,且有很大变化。

    对于协议洪水。

    可以这样子做,给协议进行计数,同一条协议,如果发了太多上来,那么超过了一定的阀值,直接丢弃就好。

    别整天想着怎么防外挂,游戏有人玩了再说吧。

    好好做游戏,加油。

    相关文章

      网友评论

          本文标题:游戏防外挂处理

          本文链接:https://www.haomeiwen.com/subject/svgsbqtx.html