限制突破类风险定义:
不以规矩不成方圆,游戏正是通过各种各样的限制条件,来实现自己的一套规则。有了规则就有打破,特别是这些限制,在黑客眼中就是挑战。打破游戏中本身的限制来获取收益都可以成为限制突破类风险。
限制突破类风险分类及危害:
游戏中的限制无处不在,而突破限制的漏洞更是不计其数,先开看几则案例:
当你在某游戏中冲锋陷阵的时候,你发现你的敌人,突破了地形的限制,躲在了地下,你无论怎么攻击,也打不中他,最后只能输掉PK赛
某项任务限定了你只有在满足一定等级时,才可以领取进行对应挑战任务,如下图
但是想要满足条件必须自己花费较多的游戏时间和金钱,这时你可以直接利用漏洞领取对应任务
再比如某游戏的道具制作,为了限制玩家的收益,在每一等级,玩家只能制作一定量的道具,但是利用漏洞,却可以突破这一限制
某游戏的副本中,为了限制玩家直接通过个人角色技能快速通过副本,故特意对飞天类技能做了限制,强制玩家必须通过战斗获取胜利,但是这时,又可以利用漏洞突破限制,不用打怪快速通过对应副本
可以通过上述例子,可以进一步将限制突破类风险进行归纳如下:
游戏的玩法无穷无尽,游戏的限制也成千上万,上述也只是简单了罗列了一些典型的问题,还有更多的漏洞隐藏在游戏各种各样的限制条件中等待着发现。
限制突破类漏洞的危害程度也各不相同,如果在关键逻辑的限制被突破,则很有可能会获得大量的游戏收益,直接影响到游戏公平性,甚至是影响游戏的收入,使得游戏的口碑急剧下降,但如果不是很重要的限制逻辑被突破,则也有可能对游戏影响较小。
限制突破类风险原因:
限制突破类风险存在的根本原因是因为游戏将限制的逻辑放在了客户端,而服务器又没有校验或校验不严格,导致了限制可以轻而易举绕过。
限制突破类风险验证方法:
由限制突破类风险的原因,可以了解到大部分逻辑存放在本地,于是验证的核心思路就是突破本地限制逻辑,一般来讲两种思路:
有游戏逻辑入手,一般需要具有较强的逆向功底和编程能力,从协议上入手,比较简单,利用协议工具,分析清楚协议间的交互逻辑,在通过工具的自动切割,确定每一个字段的含义,就可以结合限制点进行协议修改重发了。
具体可以看一则案例:
某游戏在锻造物品时,一天最多只能锻造10次,一次最多锻造10个,通过协议工具,可以拦截在锻造一次的时候的上行协议:
[02 3C 14 53 1F 0A 18 11 BE 0D 01 00 00 00 19 44 79 EF 0A 20 F6 07 01 ]
[02 3C]协议号
[14 53 1F 0A 18 11 BE 0D 01 00 00 00] 未知,与协议类相关
[19 44 79 EF]玩家ID
[0A] 玩家锻造类别
[20 F6] 玩家锻造物品的ID
[07] 玩家一次锻造物品个数
[01] 玩家今日锻造物品次数
通过对协议分析得知,我们感兴趣的字段有,玩家锻造物品的ID,锻造物品的个数,和今日锻造物品次数。尝试修改锻造物品ID至任意,发现服务器对玩家无法锻造的物品进行了校验,但我们进一步更改玩家一次锻造物品个数为0x10,并进行协议重发,发现玩家一次可以锻造20个物品,进一步我们锁定玩家锻造物品次数为0x01,让服务器认定为每一次锻造物品,都是今天的第一次锻造,这样就欺骗了服务器,可以突破每日的锻造次数上限了。
*转载请注明来自游戏安全实验室(GSLAB.QQ.COM)
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课