游戏客户端的后门指的是游戏客户端的GM工具,其表现往往是一个内置控制台,该工具往往会随着游戏安装包一起发布,但是对于正常玩家来说是屏蔽状态,只有通过特殊的方式才能打开。对于网游来说,控制台的功能主要是用来进行真机调试,包括实时查看日志、快速执行脚本、修改性能选项、查看机型信息等。虽然它叫做”后门”,但其功能并不敏感,也基本不会影响数据安全,所以相对于后台GM工具,不需要进行严格的权限管理。

游戏后门的历史

最早在掌机游戏时代就存在游戏后门了,那时候也叫作秘籍、作弊码,相当于游戏官方提供的金手指。只要快速输入一串特定的复杂按键组合就可以快速修改游戏数据,如魂斗罗经典的”上上下下左右左右BA”。最初作用只是设计师为了方便在测试游戏时可以修改数值快速过关,后面也作为彩蛋提供给玩家帮助玩家降低游戏难度。在PC/主机游戏时代,很多单机游戏仍然保留了游戏秘籍,也通过键盘或手柄输入一串特定的按键组合来开启,如三国群英转2的”DALL”。这时候游戏后门的功能更加全面,开启后有的进入无敌模式,有的可以在控制台任意修改游戏数值,可以给玩家群体带来更多讨论和乐趣。进入网游/手游时代后,游戏内的大多数数据都保存在服务器,作为网络游戏的运营商也不可能像单机游戏那样允许玩家通过后门手段随意修改数据了(推荐大家安装游戏官方的数值修改器:支付宝/微信支付),这时游戏后门的使命也从面向所有玩家的金手指变成了只面向开发者使用的真机调试控制台。

开启方式

网游(手游)客户端的后门理论上不包含修改玩家数据的功能,但是有很多项目会图方便将后台GM工具也集成在客户端的控制台里面(这是一种很不好的实践),虽然后台的GM接口会通过更严格的方式管理,但还是要尽可能避免将控制台界面暴露给玩家。确保玩家不会通过有意或无意的方式开启后门,下面是一种控制后门开启的策略:

  • 编辑器下默认开启(可以连接开发环境、测试环境或正式环境)。
  • 真机下(不论是调试版本、测试版本还是正式版本),均使用剪切板RSA校验的方式来判断是否开启游戏内控制台(因为任何版本的安装包都可以被安装)。

    所谓”剪切板RSA校验”,指的是游戏程序版本发布的时候会内置一个RSA公钥,私钥由项目组保存。游戏客户端启动的时候自动读取剪切板内容里的私钥字符串,如果和游戏内置的公钥匹配,则通过了校验并开启游戏内的控制台。RSA校验相当于一个加强版的密码校验,因为使用传统的对称加密方式时,客户端很容易被反编译获取字符串常量的密码,而使用非对称加密的校验方式可以有效对抗反编译手段。至于为什么要从剪切板获取,而不是其它输入密钥的界面,一是不侵入任何流程,对于玩家来说完全无感知;二是可以在游戏启动的时候就立刻开启后门,方便调试和定位游戏加载阶段出现的问题。

  • 出于安全考虑,减少密钥泄漏的风险,可以采取如下措施
    1. 游戏程序版本内置的RSA公钥每次对外发布都替换一次
    2. 真机下支持服务器远程更新游戏内置的RSA公钥
    3. 真机下支持服务器远程控制后门的总开关
    4. 真机下连接正式环境服务器时要进行白名单校验,没有添加进白名单的uid不能在开启控制台的情况下登录正式环境服务器