Title
很久以前被淘宝的 Steam 假 CDKey 给坑过,因为价格其实也不便宜,打的正版宣传,其实是盗版,后来感觉太可疑了查了一下确认被坑了。现在突然想起来了解了一下。本文概述是日常语境中的 “Steam假入库”需要的一些步骤,概括起来为五个方面:解锁、下载、入库、DRM、API验证。
下载验证
steam 的下载鉴权流程是
- 查找账号是否有拥有此游戏,有则显示下载按钮
- 点击下载后,把游戏软件 Manifest 对应的密钥(DecryptionKey)明文写入一个本地文件
Steam\config\config.vdf
- Steam (原版)根据
config.vdf
中的信息,发送下载请求至 Steam CDN 进行下载
“Steam 解锁” “Steam 假入库” 指的是绕过上述机制。具体而言,如果没有购买游戏,可以:
- 将按钮变为可下载(至于是伪造请求实现还是逆向 hook 实现,我不知道,都可以,因为甚至不需要变按钮,给个外部的下载按钮也可以)
- 点击按钮后,从不知名渠道获取一个正版账号的 Manifest(下载清单)和 Decryption Key(下载密码),写入
Steam\config\config.vdf
- Steam(原版)根据
config.vdf
,发送下载请求至 Steam CDN 进行下载
Steam 的下载验证可以说是相当简单,明文本地存密码,CDN 无状态的验证,这么多年没有改过流程,给入库工具空间(虽然说前端的事总有办法 Hack 但也是可以让 Hack 成本变高很多的)。不过 Steam 理念本来就是以平台服务留住玩家的,反倒是扩大了其影响力与营收。
一些名词解释:
- 解锁:指对没有购买的游戏,“可以显示下载按钮”。和能不能下载没有关系。
- 下载:Steam 根据
Steam\config\config.vdf
的信息下载游戏文件。 - 入库:指把下载好的游戏,在当前电脑的 Steam 库中显示。
以上过程均不涉及对游戏本身的破解,只是对 Steam 下载过程的破解。也就是,破解的是 Steam,不是游戏。
运行时验证
这里开始才会涉及到游戏破解。
有的 Steam 游戏下载下来后是不用破解的,直接找到游戏目录,点 exe 可以正常游玩(比如星露谷)。只是无法通过原版 Steam 打开,也就只能离线。
有的游戏是无法脱离 Steam 直接运行的。这里涉及两层验证:
加密算法层
这是一层 DRM(数字版权加密保护)。Steam DRM 系统的名称为 SteamStub。SteamStub 的加密有各种的变体,每个游戏使用的不一致。只对 exe 的算法加密,是一个离线的步骤。不涉及 Steam 平台的验证。
网上有一个开源工具叫 Steamless,可以破除 SteamStub 对游戏的 DRM,称为脱壳。但脱壳本身不处理 Steam 在线验证相关,只进行了脱壳的游戏也是无法正常游戏的。
SteamStub DRM 和 Steamworks API 是两个独立层。Steamless 仅移除 SteamStub 加密外壳,但游戏代码中与 Steam 平台功能(如成就、云存档、联机)相关的 API 调用(通过
steam_api.dll
)仍会保留。
Steam API 验证
游戏还可能调用 Steam api 进行在线通信,如成就、云存档、联机相关的 API 调用。
这是使用入库工具玩破解游戏可能被红信或封号的根本原因,因为对 API 的调用是发送到 Steam 官方服务器的。在小红书上了解到,有的玩的盗版可以与正版联机,说明 Steam 在联机时并不会验证账号是否拥有该游戏。包括 Steamtools 实现的家庭共享联机,也说明了 Steam 对于是否账号可以进行联机鉴权不足。但只要留有记录就有可能导致被封号,取决于 Steam 什么时候想管理盗版现象。
反之,如果伪造一个 Steam 的服务器,并且替换游戏中的 Steam 相关的动态链接库,如 steam_api.dll
,游戏里所有对 Steam API 的调用被发送到假服务器上,返回一个假的结果。这种工具也已经有了,项目为 goldberg_emulator,简称 GBE。破解版的游戏通常会内置一个这样的虚拟 Steam 环境。
第三方厂商验证
很多大厂的游戏有自己的联机服务器和验证机制、不仅走 Steam API 的验证。这种也是可以通过虚拟环境破解,但没人做,除非专门对这个游戏的所有 API 做逆向。难度比逆向通用的 Steam API 高很多。
Steamtools 是什么
已知 Steamtools 主要是做 解锁 和 入库。对于会不会破解游戏,网上没有更多的信息。我也不想冒风险尝试使用它。
根据官网的解释,Steamtools 可以离线运行(不如说破解游戏只能是离线运行),是提供了类似 GBE 的验证环境。有没有对 DRM 脱壳不清楚,但个人倾向于有,很多游戏都有 DRM 的保护,除了 SteamStub,还有其他的 DRM 验证方式,不脱壳玩不了。
因此个人推测是,Steamtools 是集 解锁、下载、入库、破解、运行时验证 为一体的工具集。
SteamAutoCrack 是什么
只做 DRM 脱壳和 Steam API 验证。项目在 Github 上,破解后的游戏会运行在 GBE 的环境下。这种方式是完全离线运行的单机。
风险来源
完全脱离 Steam 运行没有风险,只要在线就可能有风险。
假入库阶段的风险主要来自于入库工具对 Steam 请求拦截的覆盖程度不足。例如 Steam 版本更新了,使得 API 和下载流程有变化,而入库工具没有对其做处理,无法完全欺骗下载流程。网上看到假入库的人可能有囤积癖或者是打算做灰产,一次性入库了几十个游戏,直接导致被 SteamCDN 拉黑。
运行时的风险也是来自于在线验证,如果是开着 Steam 玩的破解游戏,没有离线时甚至尝试联机,使得游玩信息发送到了 Steam 的服务器(比如不该有的存档、不该有的联机等等)。
另外,入库工具会侵入式修改 Steam的客户端,直接打开 Steam 可能会有检测文件是否被修改。 Steamtools 提供了三种启动模式,可以随时恢复为原版 Steam 的运行。但淘宝卖的入库工具说不准是什么样的,当年骗我的店家那个用的是早期的 steamtools,使用店家的账号下载游戏后,使用 steamtools 离线运行(本来已经忘记了,努力想想竟然想得起来一点细节)。但现在的店家说不准是什么样的,在 B 站看到说有的是直接修改文件,从此都是盗版Steam 客户端,只能卸载重装。
没有风险的方式:如果你有方式得到 Steam 正版的游戏文件,然后用 SteamAutoCrack 破解,能直接脱离 steam 运行则没有风险。
对于更多的人而言,下载木马是最大的风险。
参考资料
- bbs.steamtools论坛
- SteamManifestCache wiki
- SteamLess Readme