前言
随着游戏行业的火热发展,对游戏进行恶意攻击的黑产业务愈演愈烈。在遭受网络窃贼的攻击后,存在游戏玩家的虚拟设备与游戏账号被盗的现象,这使得安全问题成为玩家与厂商之间以及玩家与玩家之间冲突的主要来源。
其中,外挂作为一种被很多玩家接纳的辅助软件,具有区别于其他黑产的用户主动性,因此需要我们特别关注。
防御黑产和外挂大致可以分为以下几部分:
事前防御:通过游戏安全测试,发现代码或逻辑上存在的风险,反馈给游戏业务方修复
事中防御:通用代码保护、资源加密、文件校验、反调试等功能主动防御,对抗移动应用的暴力破解,阻止核心代码、资源文件窃取,避免恶意代码注入
事后防御:通过实时统计外挂、破解、盗版等风险信息,智能挖掘新型外挂,精准定位外挂工作室等潜在安全隐患
游戏安全测试
进行游戏安全测试的目的主要是为了提前暴露当前游戏的风险,修复风险后再上线,可以有效减少线上运营阶段产生安全问题的概率。
游戏安全测试可以从多维度来对游戏进行风险挖掘:
服务宕机检测
通过模糊测试,快速高效地挖掘服务器进程宕机和客户端攻击崩溃等致命漏洞。
渗透测试
模拟外网玩家和外挂工作室,从攻击者的角度对游戏进行逆向分析和破解,主动发现和挖掘系统中的弱点、技术缺陷和安全漏洞,并进行缺陷放大和风险性评估,提前暴露游戏潜在安全风险,提供安全漏洞修复方案,最大程度降低事后外挂危害与外挂打击成本。
静态扫描
对手游中配置档、资源文件、脚本文件、manifest.xml、 so 文件,通过自动扫描的方式来进行检查项的确认。主要针对的是信息安全与数据安全。
动态扫描
基于 frida,对手游内进行函数修改、内存修改、变速修改、协议修改、脚本修改等等。
安全测试工具(GameSentry)
为了提高安全测试效率,首先需要解决一些重复且浪费精力的步骤,以解放人力与降低对测试人员的门槛。
工具需要解决人力分析协议内容、函数的逻辑与对应的内存地址,让测试人员不必关注安全技术,把工作重点放在游戏内容上面。
根据经验,在安全测试过程中,通常需要获取函数、类的命名及地址,修改发送的协议以及修改函数的传参和 lua 代码的部分逻辑。根据以上的痛点,设计了不同的功能模块。
工具架构流程图
界面展示
工具不仅提供了常规的协议展示、函数拦截、内存实例获取,还提供了自定义 hook 代码,让测试人员有更灵活的修改方式。
协议展示
自定义
工具实现方法
逻辑交互流程如下
首先,工具在启动时就会获取手机上的基本信息,如安装应用、版本、是否为 root 等,并根据不同的启动项对游戏进行初始化。
(1)协议解析
游戏一般采用 protobuf 作为协议传输格式,所以解析也是针对 pb 的解析,通过获取 pb 类特征,并解析类的变量来获取协议格式及内容。
(2)Lua 修改
主要分为 lua_dump 和 lua 重新加载这一操作。普通的 lua 替换一般是在游戏启动加载 lua 时,通过 hook luaLoadBuffer 替换加载进内存的 lua 文件。这种方法存在一个问题,就是如果需要再次修改 lua,则需要不停地重启替换,所以工具实现了 lua 实时修改加载,提高了测试效率。
(3)trace func
如果根据堆栈信息还原调用链,只能获取到函数的内存地址,还需要去遍历解析符号表才能获取到命名。通过初始化解析函数时,在指定范围内所有函数插桩并记录符号信息,当需要获取调用链时获取插桩信息,即可还原指定范围内的调用链。
测试过程
游戏安全是多个维度的,不仅需要从工具上提高效率与质量,也需要从测试方法上面提高效率。除了完善漏洞评级以外,如何提高测试覆盖面,如何提供更有效的解决建议,也是值得关注的地方。
漏洞评级
测试流程
总结
事前开始对游戏进行安全测试,将漏洞与 bug 风险降至最低,上线之前将代码、资源进行保护,后期运营实时统计外挂、破解、盗版等风险信息,全方位的构建一个安全体系,让外挂无机可乘。
只需提供 apk ,可在约定时间内拿到一份安全评估报告。
主动防御,精准打击外挂,降低破解风险,支持多种游戏框架,提供游戏引擎保护、资源文件保护、外挂闪退等功能,保护开发者权益
实时统计外挂、破解、盗版等风险信息,精准定位外挂工作室等潜在安全隐患,为游戏运营提供全新利器,支持 Android 与 iOS 平台。
关于易盾
网易易盾是网易集团旗下一站式数字内容风控品牌,依托网易 20 多年的先进技术沉淀和一线实践经验,作为国内领先的数字内容风控服务商,为面向数字化业务的客户提供专业可靠的安全服务,涵盖内容安全、业务安全、移动安全三大领域,全方位保障客户业务合规、稳健和安全运营。目前,网易易盾已服务超 40 万开发者与数千家付费客户,其中不乏人民网、外交部、华泰证券、中信银行、OPPO、vivo、滴滴、知乎、B 站等知名企事业单位。