min722922 发表于 2017-12-20 12:44:51

网络游戏实现变态功能原理解释

今天我们讲的论题 不分端游/手游仍是页游,是一个相通的概念

如果你彻底不懂逆向和游戏安全 也不要紧

从一个玩家的视点 你可能也听说过或则游戏中见过各式各样的反常功用(影响游戏平衡体系的功用)例如

秒杀 无敌 瞬移 刷枪 踢他人掉线 飞天遁地等等这些功用听起来就很炫酷很爆破

可是完成起来其实并没有多么复杂,乃至会比逆向游戏中正常功用简略那么我们先来了解一下反常功用是怎样发生的呢?

反常功用往往都是游戏规划时留下的危险,网络交互和服务端校验忽略导致的,什么是游戏网络交互呢?

举个最简略的比方,游戏中玩家A喊话,玩家B是怎样收到的呢?

是玩家A像服务器发送喊话封包,服务器收到恳求,向玩家A周围必定范围内的其他玩家发送封包,其他玩家收到服务器的封包,就知道玩家A的喊话内容了这就是一种网络交互

有人会问 这种交互看上去很合理啊 怎样会导致反常功用呢?

再举个更简略的比方

玩家A向服务器发送完成任务封包,服务器收到封包做相应处理及回应

实际上这个比方里就存在着可能忽略的当地,如果服务器没有再次验证任务完成状况而是挑选高度信赖玩家A发送的封包,就有可能被使用完成反常功用,导致秒完成任务

这就是一种服务端校验忽略导致的 这种反常功用往往是能够被防止以及修正的 办法是把逻辑算法以及校验悉数放在服务器 挑选不信赖客户端的任何封包

我们现实生活中其实也一样

例如我们去货台买票,一张票50元,我们把50元给售票员,然后通知他"给你50元",

正常状况下售票员挑选是验证是否是50元,而不是单方面信赖客户,如果单方面信赖就简略形成丢失,

和游戏中到达反常功用是一个作用

我们再举一个比方

游戏中,我们进犯怪物,本地客户端逻辑算法计算出怪物扣血量,向服务器发送怪物扣血封包,这种规划就是不安全的


安全的规划应该是这样

游戏中,我们释放技术,向服务器发送技术封包,服务器逻辑算法算出该技术是否对怪物形成损伤以及损伤多少,然后反馈给客户端

实际上我们单纯经过发包的方位看进犯怪物的时分技术封包和是否有扣血封包就应该知道该游戏是否有秒怪功用了

当然也有别的一种秒怪功用是这样的 服务器没有对技术CD进行验证我们1秒之内发送许多个技术包服务器都承认了作用那么仍然能够到达秒怪功用

以上的反常功用看上去只需慎重和不断的测验就能够高概率的防止

那有时分服务器校验出现一种知法犯法的感觉,比方某些射击类游戏快速射击,大型3D游戏短距离瞬移,有人会问,他明知道有缝隙为什么不修正掉

其实这是无法之举 原因在于如果所有的封包都验证,算法都放在服务器,处理结果等候服务器,必然会发生较高的延时

那么在这种剧烈的实时战役和激烈冲击感的游戏中,和规划初衷是彻底相悖的。所以是否有某些反常功用也是取决于游戏类型的。

还有就是我们会发现,欧美韩的网络游戏反常功用更多,根本原因不是没有反 思路,而是在于更在乎游戏体会和冲击感不得已的挑选,

国服自主开发的游戏反常功用很少,原因在于中国是工作室大国...反 已经成为游戏规划的重中之重

这样我们就了解了反常功用的实质其实就是网络交互导致的,无论是不得已仍是忽略

那么关于有必定逆向根底的人来说,会说我知道的反常功用完成办法许多啊,不止是封包协议完成例如:

替换游戏文件,修正游戏文件

修正代码 修正数据

篡改协议,协议重发,结构变形协议形成处理溃散等等

那么我在这里想说的是 这些办法异曲同工,终究都是经过封包完成的作用我们来逐个举例说明

静态替换游戏文件,包含多年前TP驱动维护文件也是能够替换的,原因在于,游戏没有去严厉验证,我只翻开这个文件,没有验证他是否是真实的文件

替换文件实际上就是替换了游戏的逻辑,那么终究发生的封包也发生了变化

这种办法,简略方便,不需要去剖析封包协议,可是终究也是因为改变了封包而导致的作用,例如某个副本文件被替换成简略副本文件,全体的逻辑发生变化,可是往往这种能够完成的条件仍是网络校验不严厉,或则其实一个终究的副本通关封包就能够完成

至于静态修正游戏文件 和动态修正游戏代码(数据) 实际上没有什么实质区别都是修正游戏逻辑罢了

在这里边我们举两个比方 我们就会理解 修正逻辑的含义和怎样影响的封包

例如某游戏无敌,我们能够去修正代码损坏人物的逝世逻辑,让他无论什么状况下都不履行逝世CALL,这样就到达了无敌不死的作用,实际状况就是屏蔽掉了人物逝世封包,终究仍是影响封包罢了

例如某游戏技术无CD,我们能够去损坏掉技术的CD判断,实际上终究影响封包的作用就是,屡次发送封包而已

这两种反常功用 其实就是让他发包或则不让他发包罢了

至于协议篡改,协议重发,那就是更直接的剖析封包协议了,我们有机会能够具体解说。

还有就是结构变形协议也是一种反常功用的完成办法,例如封包中某个参数,我们用极限值替换,例如0-1零,一,无限大,无限小FF等等,可能会形成服务器处理溃散,而发生意想不到的结果,比方对战玩家被踢下线等等。

baixiangfei 发表于 2017-12-20 14:25:40

学习了,感谢分享!

a1419183303 发表于 2017-12-20 16:50:13

学习了,感谢分享!

浮生卍若梦 发表于 2017-12-20 17:19:49

学习啦,讲的很透彻。期待继续更新。
页: [1]
查看完整版本: 网络游戏实现变态功能原理解释