1996年,id Software推出了一张售价9.95美元的《雷神之锤》共享光盘,试图让玩家通过电话购买解锁码的方式直接购买游戏。这套方案仅维持了39天就被黑客组织GNOMON破解,最终导致id Software停止销售相关光盘,留下约15万张库存盘。

当地时间8月17日,谷歌软件工程师Fabien Sanglard在其博客上回顾了这段历史。1996年《雷神之锤》发售时,互联网尚未普及,游戏厂商通常通过共享软件形式让玩家先体验部分内容,再购买完整版本。当时一张640 MiB的CD-ROM容量相当可观,而《雷神之锤》本身仅占约22 MiB,id Software便计划利用剩余容量,将旗下其他游戏也以加密形式放入其中。

打开网易新闻 查看精彩图片

电话解锁:连接销售与授权的桥梁

这张光盘于1996年8月30日正式发售。玩家购买后可以运行《雷神之锤》体验版,也能进入“ID STUFF”目录浏览其他id Software游戏,包括多个版本的《毁灭战士》以及《异教徒》《毁灭巫师》等作品。

如果玩家希望购买其他游戏,只需拨打“Quake Unlock Center”电话,将解锁程序生成的11位验证码提供给客服人员,通过电话支付费用后,客服会提供一个解锁码。玩家输入解锁码后,光盘中对应的加密游戏即可恢复为完整版本。由于当时还没有普遍使用的联网验证系统,这种电话解锁方式成为id Software连接销售和软件授权的主要手段。

从设计思路来看,这套方案让玩家购买光盘后直接获得完整游戏,无需再次前往零售店。id Software也可以减少传统实体零售渠道的参与,从而节省成本并获得更多销售收入。

39天:从发售到破解

然而,id Software及其负责加密系统的TestDrive公司低估了破解者的研究能力。1996年10月8日,GNOMON发布了名为QCRACK.EXE的破解工具,距离光盘发售仅39天。该工具能够根据解锁程序显示的11位验证码自动生成有效序列号,用户无需实际付款即可解锁光盘中的完整游戏。

Fabien Sanglard对光盘进行逆向分析后发现,这套系统的核心问题在于“安全性依赖于保密”。TestDrive的工具会对游戏可执行文件进行处理,将原始文件头替换为自定义头部,并将文件转换为特殊格式,同时生成用于后续恢复的相关数据。

表面上看,解锁过程中所需的序列号由服务器根据不断变化的验证码生成,似乎可以避免序列号重复使用。但实际上,光盘中的解锁程序本身就包含了生成序列号所需的信息。解锁程序会根据验证码,从光盘内的本地数据中计算出一个序列号,然后与用户输入的序列号进行比较。一旦破解者从中找出计算序列号的算法,就可以绕过付款环节直接生成有效序列号。

不止加密被破:系统内部的多重漏洞

除了核心加密方案被破解外,Sanglard还发现这张光盘中的解锁系统存在其他问题。例如,《Final Doom》的解锁功能本身就存在错误——光盘中的SKU.17文件将该游戏对应的名称错误记录为首字母大写的“Final”,而程序实际需要的是小写的“final”,导致付费用户无法正常获得对应解锁码。

更严重的是,系统内部存在大量能够辅助逆向分析的文件。虽然说明中提到了加密的SKU.17文件,但光盘内同时存在包含相同信息的明文SKU.TXT文件。此外,一些其他文本文件也与对应的加密文件同时存在。

研究还发现,这套系统使用的文件库格式本身没有经过真正的加密或混淆处理。破解者只需要理解相关目录和文件结构,就能够获取生成序列号所需的数据。

15万张库存:一次失败的代价

破解事件最终给id Software的零售计划造成了直接影响。由于大家都可以用破解工具解锁游戏,继续销售这套光盘已经失去意义。id Software因此选择停止销售,并留下约15万张CD-ROM库存。

这次失败也反映出20世纪90年代软件厂商面临的数字版权保护问题。当时互联网基础设施和在线授权机制尚未普及,软件厂商往往需要把授权逻辑和相关数据直接放入用户购买的软件中,因此一旦本地程序被逆向分析,整个保护机制就可能被绕过。