网络游戏里变态功能的奥秘
在网络游戏中,我们经常会遇见一些所谓的“变态功能”,什么叫做变态功能呢?
变态功能的定义非常简单,就是我们正常玩家无法做到的事情,统称为变态功能!也可以理解为很牛X的功能。
[attachment=10358819]
例如,飞天,遁地,无敌,秒怪,加速,透视等等
这里面有一个小小的提问,自瞄算不算变态功能? 答案是不算
因为正常玩家玩的足够好,那么也是可以枪枪爆头的。(虽然可能性极低)
自瞄不过是电脑帮我计算准星,实现人类的最高能力,电脑的计算速度远远高于人类
正常的变态功能 是属于游戏的Bug导致的,但是自瞄不是变态功能,自然也就无法避免,这也就是为什么只要是FPS游戏,无论有没有其他变态功能,自瞄爆头一定存在的原因。
但是飞天之类的功能,你怎么操作也没有任何实现的可能的,这种就是真正的变态功能了
[attachment=10358818]
我们正常玩家是没有办法做到这些事情的!
变态功能的产生
1.服务器验证漏洞
我们拿几个例子来举例,有的游戏是在设计的初期就存在的协议漏洞,属于设计问题,后期很难修改掉。
[attachment=10358823]
例如某个游戏,怪物扣血,不是由服务器来判断的,而是我们本地判断怪物是否扣血,然后告诉服务器的,那么你想扣多少血都可以,告诉服务器就可以了,随意修改。
正常的安全验证方式,应该是我们做攻击技能等操作,然后服务器收到这些协议,在服务器上计算怪物应该扣多少血量,然后再告诉我们,这样客户端就没有办法随意修改怪物的血量了。
[attachment=10358820]
有的验证漏洞是程序员无意的逻辑漏洞,例如,某个游戏在做一个特定任务的时候像服务器发送一个封包,然后就可以获得到一个特殊的BUFF效果,但是这个获得特殊BUFF效果的封包,可以在任何环境任何时候使用,这就是服务器没有对这个封包的有效环境做验证了。后期发现也是很容易修改的,只要在接受这个封包的时候加几条代码判断就可以了,重点是能不能及时发现!
2.游戏需要
很多3D大型游戏,多人团战,战斗激烈,尤其人物的坐标变动的十分频繁,服务器时时验证会导致网络延迟,打击感减弱等等严重影响游戏体验的情况发生!
那么为了用户体验,没有办法,只能减轻对坐标的验证,那么小范围瞬移或则加速的变态功能就出现了!利润上这个也是不好避免的,但是随着5G 时代的到来,这种问题会减轻很多
通过变态功能的产生,我们可以知道一件事,是否有变态功能和游戏本身没有必然关系
比如有同学说传奇这种老技术老游戏应该很多变态功能啊,为什么没有
[attachment=10358821]
就拿加速瞬移做例子,现在的很多大型3D游戏存在加速,瞬移,但是传奇2D游戏坐标变动没有那么快速频繁,反而不存在这种变态功能,所以是否有变态功能不是看这些的,而是看他模式和服务器验证方式!
变态功能的实现,有两种方式
知道了原理,那也就知道实现的思路了,有3种实现的可能,但是实际上殊途同归
1.封包分析
任何的功能最终都是通过封包和服务器通信的,所以任何的变态功能也都是可以通过封包来实现的
例如,某游戏秒怪,实际就是发送一个怪物死亡封包,只要你抓到这个封包,发送即可
例如,某游戏不死功能,实际上就是抓到了人物死亡封包,然后拦截下来,什么情况都不发送即可
例如,某游戏变态BUFF功能,实际就是抓到了一个特殊情况下的BUFF封包而已。
2.修改逻辑
有很多逆向新手说,我做变态功能的时候,没有分析封包啊,只是修改了游戏的几个字节,就可以了。实际上这就是修改游戏逻辑代码,最终也是影响的封包,只是处理的位置不同而已。
我们来举几个例子
例如,某游戏秒怪, 我们找到怪物死亡call 附近的代码,然后修改跳转,比如jnz 改成jmP ,让代码无论什么情况都会执行到怪物死亡call,这样无论什么攻击都会导致怪物死亡了。
例如,某游戏不死功能,我们把人物死亡函数直接Nop 掉,或则直接把上面能跳到死亡call的跳转全部修改了即可保持人物不死。
例如,某软件破解,登录验证是否成功的判断跳转修改成无论返回值是多少都是成功,那么就可以破解登录了
但是我们怎么修改逻辑代码,最终只是为了影响封包而已
3.修改封包参数
还有一种就是修改封包参数了
这种需要自己尝试
例如我们抓到一个封包,把其参数修改成为一个特别大的值或则特别小的值,导致服务器判断错乱可能会产生很多意向不到的效果
例如某游戏,我们修改换线封包参数,结果我们到了一条测试线,没有人和我们抢怪了
例如某游戏,我们修改了一个获取宝藏的封包参数,结果低级副本得不到的材料,我们现在可以得到了。
这种思路,往往是抓服务器缺少的判断,导致服务器出现错误,但是同样付出的测试过程也是十分辛苦的
[attachment=10358822]
变态功能的定义非常简单,就是我们正常玩家无法做到的事情,统称为变态功能!也可以理解为很牛X的功能。
[attachment=10358819]
例如,飞天,遁地,无敌,秒怪,加速,透视等等
这里面有一个小小的提问,自瞄算不算变态功能? 答案是不算
因为正常玩家玩的足够好,那么也是可以枪枪爆头的。(虽然可能性极低)
自瞄不过是电脑帮我计算准星,实现人类的最高能力,电脑的计算速度远远高于人类
正常的变态功能 是属于游戏的Bug导致的,但是自瞄不是变态功能,自然也就无法避免,这也就是为什么只要是FPS游戏,无论有没有其他变态功能,自瞄爆头一定存在的原因。
但是飞天之类的功能,你怎么操作也没有任何实现的可能的,这种就是真正的变态功能了
[attachment=10358818]
我们正常玩家是没有办法做到这些事情的!
变态功能的产生
1.服务器验证漏洞
我们拿几个例子来举例,有的游戏是在设计的初期就存在的协议漏洞,属于设计问题,后期很难修改掉。
[attachment=10358823]
例如某个游戏,怪物扣血,不是由服务器来判断的,而是我们本地判断怪物是否扣血,然后告诉服务器的,那么你想扣多少血都可以,告诉服务器就可以了,随意修改。
正常的安全验证方式,应该是我们做攻击技能等操作,然后服务器收到这些协议,在服务器上计算怪物应该扣多少血量,然后再告诉我们,这样客户端就没有办法随意修改怪物的血量了。
[attachment=10358820]
有的验证漏洞是程序员无意的逻辑漏洞,例如,某个游戏在做一个特定任务的时候像服务器发送一个封包,然后就可以获得到一个特殊的BUFF效果,但是这个获得特殊BUFF效果的封包,可以在任何环境任何时候使用,这就是服务器没有对这个封包的有效环境做验证了。后期发现也是很容易修改的,只要在接受这个封包的时候加几条代码判断就可以了,重点是能不能及时发现!
2.游戏需要
很多3D大型游戏,多人团战,战斗激烈,尤其人物的坐标变动的十分频繁,服务器时时验证会导致网络延迟,打击感减弱等等严重影响游戏体验的情况发生!
那么为了用户体验,没有办法,只能减轻对坐标的验证,那么小范围瞬移或则加速的变态功能就出现了!利润上这个也是不好避免的,但是随着5G 时代的到来,这种问题会减轻很多
通过变态功能的产生,我们可以知道一件事,是否有变态功能和游戏本身没有必然关系
比如有同学说传奇这种老技术老游戏应该很多变态功能啊,为什么没有
[attachment=10358821]
就拿加速瞬移做例子,现在的很多大型3D游戏存在加速,瞬移,但是传奇2D游戏坐标变动没有那么快速频繁,反而不存在这种变态功能,所以是否有变态功能不是看这些的,而是看他模式和服务器验证方式!
变态功能的实现,有两种方式
知道了原理,那也就知道实现的思路了,有3种实现的可能,但是实际上殊途同归
1.封包分析
任何的功能最终都是通过封包和服务器通信的,所以任何的变态功能也都是可以通过封包来实现的
例如,某游戏秒怪,实际就是发送一个怪物死亡封包,只要你抓到这个封包,发送即可
例如,某游戏不死功能,实际上就是抓到了人物死亡封包,然后拦截下来,什么情况都不发送即可
例如,某游戏变态BUFF功能,实际就是抓到了一个特殊情况下的BUFF封包而已。
2.修改逻辑
有很多逆向新手说,我做变态功能的时候,没有分析封包啊,只是修改了游戏的几个字节,就可以了。实际上这就是修改游戏逻辑代码,最终也是影响的封包,只是处理的位置不同而已。
我们来举几个例子
例如,某游戏秒怪, 我们找到怪物死亡call 附近的代码,然后修改跳转,比如jnz 改成jmP ,让代码无论什么情况都会执行到怪物死亡call,这样无论什么攻击都会导致怪物死亡了。
例如,某游戏不死功能,我们把人物死亡函数直接Nop 掉,或则直接把上面能跳到死亡call的跳转全部修改了即可保持人物不死。
例如,某软件破解,登录验证是否成功的判断跳转修改成无论返回值是多少都是成功,那么就可以破解登录了
但是我们怎么修改逻辑代码,最终只是为了影响封包而已
3.修改封包参数
还有一种就是修改封包参数了
这种需要自己尝试
例如我们抓到一个封包,把其参数修改成为一个特别大的值或则特别小的值,导致服务器判断错乱可能会产生很多意向不到的效果
例如某游戏,我们修改换线封包参数,结果我们到了一条测试线,没有人和我们抢怪了
例如某游戏,我们修改了一个获取宝藏的封包参数,结果低级副本得不到的材料,我们现在可以得到了。
这种思路,往往是抓服务器缺少的判断,导致服务器出现错误,但是同样付出的测试过程也是十分辛苦的
[attachment=10358822]