主要观点:作者重新发现 1991 年的 DOS 和世嘉 Genesis 游戏《The Games: Winter Challenge》,因怀旧和好奇将其挖出,后因成为计算机科学家对其内部机制感兴趣,开始研究。游戏有多个版本和不同的加密方式,包括代码轮加密等,作者通过 Ghidra 等工具进行逆向工程,解开了游戏的一些秘密,包括二进制文件的解压、覆盖管理、反调试检查、代码轮检查等,发现除一个破解版本外其他版本的游戏都存在复制保护问题,最后作者还创建了一个工具来修复游戏。
关键信息:
- 游戏有 1991 年原始版、1992 年和 1996 年的捆绑版及 2020 年 GOG 版等,不同版本的加密和结构不同。
- 游戏二进制文件被 LZEXE 压缩,解压后发现包含业务逻辑和资源,且有独特的覆盖管理机制。
- 游戏有反调试检查,包括检查已知调试器和基于英特尔 8253 定时器芯片的检查,现代电脑速度快可能导致检查失败。
- 游戏的代码轮保护较简单直接,但还有隐藏的复制保护检查,在多个事件中对游戏行为有不同影响,除一个破解版本外其他版本都触发隐藏检查导致游戏损坏。
- GOG 版和一些其他版本的修改简单直接,都触发隐藏保护,而一个名为 Razor1911 的破解版本能正确绕过复制保护。
重要细节:
- 代码轮检查通过读取输入号码并与预期答案比较来判断是否正确,还将号码放置在 5 个不同内存位置用于后续隐藏检查。
- 覆盖管理机制中,中断 3fh 用于加载覆盖,覆盖以 22 字节的条目表形式存在,包含资源和代码覆盖,且部分覆盖即使在快速加载版本中也被压缩。
- 反调试检查中的一些代码故意设置误导性操作,如修改函数返回地址等,以阻止逆向工程。
- 作者创建的修复游戏工具可去除隐藏复制保护检查等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。