游戏测试 浅谈游戏安全 (一)

陈子昂 · December 29, 2019 · Last by goodpassion replied at January 28, 2021 · 5703 hits
本帖已被设为精华帖!

前言

准备来说这个是游戏安全了,安全和测试虽然有部分重合,但因为关注方向和技术栈差异还是蛮大的。
今天参加了看雪 20 周年后,祝看雪越办越好,有点感触,在郑重得吃完一盆东西后,写下这个关于游戏安全的帖子。
当然游戏在安全方向上方方面面,只接触了其他一部分,这里浅谈下这些年的一些小储备,但只讲种类,现在翻新的很快,也不确定是否还实用了。
下面很多都建立在对游戏功能业务十分了解。

客户端反编译

游戏反编译意义有很多,比如是对提取资源,代码以及重新打包。一般公司没有安全防护的找第三方公司,或者公司本身会有安全防护的都会基础的防护手段加壳和资源混淆,用非官方的手段进行编译,并且壳的种类很多,版本也在更新。
如果不加壳,被破解难度会大幅度降低,现在部分壳对游戏影响很小,还有外挂白名单的监测功能。
这里主要防护了代码和资源被破解以及二次打包风险,要获得更多信息得和了解游戏打包的方式,从下文来看,会发现这条作用又多大。

反调式模式

主要是防止进行逆向分析,目前用附加到对应游戏进程上,根据了解去花追踪的辅助工具和 IDA 十分强大,只要有足够的耐心没有什么是不可以调式的。
如果说有的话,可以在断点成功时让游戏直接挂起后退出,so 是否可以选择只被特定进程加载不确定。
为啥要反调式,因为有这个的存在可以完成游戏脱机破解和嗅探出游戏内部的一些关联。

游戏脱机破解

先得确保游戏不被脱壳,得知道协议类型,游戏数据包包头结构和消息体组成,一般进行抓包分析,现在把抓包一段段猜和拼出来的。

逻辑问题

使用游戏设计或者不是实时和数据库和服务器进行同步的功能。
前者比如一些活动设计不合理,被小号撸了羊毛转给大号上,靠封小号不是一回事啊,一开始就得想清楚。
后者比如不要被结合协议一起给做了或者脱离网络完成漏洞的重要环节。

协议安全

也是封包测试的一种,这个也是测试会做的,可以抓包去改,也可以写框架来测试,主要提高协议稳定性和检查服务端校验疏忽,首先也是得防止脱壳。
这里做起来有二个层面和一个和其他用户交互项,判断畸形边界和根据游戏数据类型设计特殊溢出的数字检查回包一个层面。
第二个层面是多次发送后,确定服务端是否有不影响宕机的错误日志,如果错误日志足够多也是可以影响服务器稳定性。
修改数据结构有几种组合(这里面说起来简单,做起来收集数据要沉淀)
fuzz 畸形数据 + 历史问题数据 ;有符号无符号数字的边界和浮点数精度问题;下个协议字段不变,参数和上个协议交换数据(需要动态才行)
最后交互是最难的一种(这个模式手动搞过,但想了下开发到框架内部也不是不行)
交互性完成的协议封包,1 对 n,进行发送不合法广播和发送合法但不该出现的消息,对其他 n 个用户的影响。

内存修改

现在字面值类型在内存中分段已经没啥用了,主要是验证客户端表现和客户端表现问题后是否会影响服务器。
因为有些时候的确修改内存会让金钱数量显示上变成很多或者背包道具叠加异常,服务器不会完全信任客户端。
之前 moba 游戏就有游戏出现修改某个附加装备后,会导致 1 级可以打死 3 级野怪的情况。

硬件变速

加速和变慢速,只要对其他人不公平的都是有影响的,这部分通常是策划层面进行防护,开加速跑路,只能靠检查用户距离最近几次坐标变换速度大于正常全 buff 速度的一定倍数就踢号。

未来需要关注的

1.第一个好像这个和游戏业务确没啥关系,但不得不做啊,随着等保标准的出现有 7 大类,50+ 的检查,对于 app 包做一系列扫描检查工具基本是箭在弦上不得不发。
可以延伸开发出 7-10 个左右的小工具,在定序用持续集成串联起来,下个文章会介绍这些小工具的简要需求和几个点的思路。

2.压测混合会让服务器正常条件下出现错误信息(前提是大部分情况下会 return null 拒绝的)

3.利用正常网络回包的时候修改发包频率的工具,接口或者工具项

4.拿一款修改工具好好二次开发,跟着别人的版本走。

5.关注舆情,检查自家游戏是否被盯上了。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 16 条回复 时间 点赞
恒温 将本帖设为了精华贴 29 Dec 08:02

RPG 类游戏经济安全,贬值太快,游戏基本也就到头了。
fps 这种无法避免外挂的,运维也是个坑。

17Floor has deleted
Ouroboros 回复

1.非移动安全还是占很大一块比例。
2.看雪本身也是验证码和防止 ddos 等使用其他厂商赞助服务。
3.等保检查 7 大类 50+ 项内容是所有移动端需要关注的,这个可以建议衍伸配合平台测试做一个工具。
4 游戏产业 四大块模式:游戏破解(客户端资源,重新打包,协议破解),生产(外挂收益研究),盗号(用户项,无法改进),私服(协议破解)
防止盗号可以配合找回机制和锁定账号机制,在技术面无法改善的。其他都可以通过技术面进行检查和改善。
关注舆情,根据舆情和用户 IM 里面信息分析出有用的和自己游戏相关的。
5.app 加固很关键,加固需要确保升级到最新的。
第 4 点,游戏产业好几个环节挺难规避的,不过有加固会好点,Fps 射击现在真是问题很多,主要同步数据,每步验证基本废了。

陈子昂 回复

嗯,不过我认为游戏类测试比其他软件测试要多一个测试目的,就是延续游戏的生命周期。
这个我觉得是游戏领域测试的核心业务吧。毕竟游戏比起其他软件来说,用户粘性太不稳定了——论玩家的玻璃心
5G 和云游戏出来,应该会对游戏安全有新的定义。

陈子昂 回复

深有同感。目前困扰最大的就是生产类和私服类,都是被动的,先爆发、后治理,非常头疼

Ouroboros 回复

提高质量和追得上性能和兼容性要求,让用户挫败感降低也是帮助到游戏变成生命周期更长的。
现在游戏不同活动都会透支生命周期主要分为 3 类:
1.拉人气,拉付费,得开发功能和周边系统,一般配合大版本上。
2.拉付费。日常礼包活动,现在慢慢加上智能推荐和反馈智能推荐。
3.拉人气。一些周边系统,一些部分节庆得地图和配套活动,是否敷衍玩家,玩家很容易分辨。

redcafe_wei 回复

私服一般只能通过钓鱼执法,虚拟财物损失相关法律逐步完善。
不过只有 hot 游戏,工作室和对应产业链才会盯上,相信这点业内基本都在内心矛盾中。

陈子昂 回复

现在的游戏种类越来越多,爆款越来越少,玩家容忍度越来越低。但是游戏也越来越不好玩了。。。80% 的游戏是为了引诱赚钱做了个游戏,而不是做了个游戏,顺便赚点钱。好多游戏做出来估计就要暴毙。这种如何避免哦~感觉有搏一搏的成分在内

以前还会用用八门神器、烧饼修改器这些 “作弊器” 的,现在估计想用也用不起来了..

Ouroboros 回复

游戏好玩这个问题,不在这个主题范围内。不过区别设计和围绕游戏名称真正意义上做一点给玩家带来热度但又不强氪金的游戏还是有不少的。主要看公司愿意投入打磨时间吧,如果时间比较紧,开发进度慢,只能先满足付费吧,才能持续活下去。

Gavin 回复

还能用,现在有更高级的了,不过最好在安卓 6.0 以及以下机器用,OL 级别的,一般都做了服务器校验。

大猫老老老师师师

陈子昂 #13 · April 07, 2020 Author
026 回复

我不是老师啊,鹏总~找本萌猫吗?

Author only
陈子昂 #16 · July 21, 2020 Author
往事随风 回复

游戏安全慢慢从前端 过度到后端。你可以学习下游戏测试接口 参数构造那边去做后端稳定性的。

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up