游戏测试 【游戏协议安全测试】分享、探讨和总结

水山 · 2021年03月14日 · 最后由 lanhai99 回复于 2022年08月05日 · 9666 次阅读

 在这里跟各位游戏测试人分享、探讨下游戏协议安全测试方面的内容,下文简称协议测试。

一、协议测试是什么?
 测试人员通过第三方工具篡改游戏客户端发送给服务器的协议,达到测试服务器逻辑、挖掘游戏漏洞的一种测试行为,称之为游戏协议安全测试。

二、协议测试的作用是什么?
 协议测试的作用是测试服务器逻辑的漏洞,避免游戏上线后被外挂团队针对性的开发损害游戏利益的 “封包” 挂(外挂圈习惯将客户端发送给服务器的协议称为封包)。
 举几个我工作中提交的 BUG 例子:
1.

 如上图所示,修改背包中道具使用协议的数量字段为负数,服务器没有校验负数,使用-1 个则增加一个道具,实现道具盗刷。
  2.A申请B加好友,B点击同意A申请,录制B产生的协议,然后更改ID为其他玩家ID,可以实现强制加他人为好友。
  3.录制领取成就奖励的协议,将ID更改为没有完成的成就任务ID,发协议直接领取成功。
  4.之前还发现过导致服务器宕机的BUG。
  5.商店购买协议,将数量字段修改为 2147483647,发送协议后,钻石数量直接变为21亿。
等等,协议测试可以发现的BUG种类非常多。
 如果上述 BUG 在研发期间没有被发现,发布到外网,一旦被外挂团队利用,游戏将遭受重大经济损失,被迫回档,严重的甚至可以让游戏直接倒闭。换句话说,协议测试可以帮游戏公司挽回重大损失,跟利益直接挂钩,发现一个致命级别的可以挽回几万到几十万的潜在损失。

三、协议测试怎么进行?
 有能力的测试同学可以自己开发工具,可以参考我的另一篇文章,其中第二点介绍的内容(https://testerhome.com/topics/25293)。
不具备开发能力的测试同学,可以提开发需求单给开发,完善的协议测试工具应该包括以下功能:
  1、录制协议并展示协议内各个字段的值。
  2、修改协议中字段的值。
  3、发送功能。
  4、拦截协议,开启拦截后,在游戏中触发的协议会被拦截,不会发送给服务器,该需求是因为某些功能的协议对一个角色来说是唯一性的,比如创建角色,比如一次性奖励。有了拦截会比较方便测试。
  5、储存用例,录制到的协议可以存放起来,像用例一样。
  6、并发功能,将一条协议并发 10 次、100 次的能力。
  7、过滤功能,心跳协议、移动协议等频繁出现的协议非常干扰测试,需要屏蔽他们。
  8、选择性拦截特定的协议,比如某些游戏消耗体力是客户端上报给服务器来触发,选择性拦截消耗体力的协议,可以实现体力无消耗。

四、什么时候进行协议测试?需要进行多久?
 协议测试应该放在封版后进行,此时游戏功能趋于稳定。
 一款游戏全量协议测试时间应该在 3 周左右,一次小版本更新应该在一周左右。如果时间实在不允许,协议测试可以不需要一定赶在上线前测试完成,为什么这么说呢?因为游戏上线后,外挂人员也需要时间去开发外挂、挖掘漏洞,协议测试人员发现 BUG 后,游戏可以通过热更的方式进行修复,协议测试发现的 BUG 一般是服务器逻辑的修改,客户端是无感知的(前提是服务器支持代码热更新)。

五、总结
 开发工具这些都是手段,不是目的,协议测试最重要的是挖掘漏洞、发现 BUG 的能力,也就是测试经验,这个只能自己积累经验并整理记录成风险模型。一个高级协议测试人员需要做到,给你一个功能,可以马上联想到这个功能可能具备的所有漏洞风险。
 协议测试是一门深奥的学问,大家有什么问题欢迎在评论区一起探讨下。

共收到 11 条回复 时间 点赞

大佬能分享一下源码嘛😀

特尔斯特 回复

这个算公司的东西,暂时无法开源,抱歉

特尔斯特 回复

建议了解一下 socket、epoll、protobuf,一步一步去做

自然生长 mitmproxy + python 实现游戏协议测试 中提及了此贴 07月01日 18:56

协议测试用例怎么设计好呢

chip 回复

举个例子:

按照这个思路来对每个字段可能有的风险进行测试

我们还碰到过一个很有意思的漏洞,外挂制作者把我们物品合成协议里三个物品的 id 都改成同一个物品,然后他就可以通过一个道具一直合成更高级的道具

gf 回复

这么巧,今天我正好发现一个我们公司的战旗游戏,角色上阵协议的漏洞,将上阵协议中,5 个角色的 ID,全部改为同一个角色 ID,发送协议后,阵容全部变成那个人了。跟你说的这个,有异曲同工之妙。

向大佬学习

大佬 想问下 这个协议测试和普通的接口测试有啥区别吗,感觉测试的方法都是差不多的

水山 #11 · 2022年04月07日 Author
逆旅 回复

本质上没有区别,游戏里面的协议就是 web 项目的接口。区别是测试的手段和工具

游戏协议安全测试 TcpEngine1.3.0

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册