揭示《游戏:冬季挑战》的机制

主要观点:作者重新发现 1991 年的 DOS 和世嘉 Genesis 游戏《The Games: Winter Challenge》,因怀旧和好奇将其挖出,后因成为计算机科学家对其内部机制感兴趣,开始研究。游戏有多个版本和不同的加密方式,包括代码轮加密等,作者通过 Ghidra 等工具进行逆向工程,解开了游戏的一些秘密,包括二进制文件的解压、覆盖管理、反调试检查、代码轮检查等,发现除一个破解版本外其他版本的游戏都存在复制保护问题,最后作者还创建了一个工具来修复游戏。

关键信息

  • 游戏有 1991 年原始版、1992 年和 1996 年的捆绑版及 2020 年 GOG 版等,不同版本的加密和结构不同。
  • 游戏二进制文件被 LZEXE 压缩,解压后发现包含业务逻辑和资源,且有独特的覆盖管理机制。
  • 游戏有反调试检查,包括检查已知调试器和基于英特尔 8253 定时器芯片的检查,现代电脑速度快可能导致检查失败。
  • 游戏的代码轮保护较简单直接,但还有隐藏的复制保护检查,在多个事件中对游戏行为有不同影响,除一个破解版本外其他版本都触发隐藏检查导致游戏损坏。
  • GOG 版和一些其他版本的修改简单直接,都触发隐藏保护,而一个名为 Razor1911 的破解版本能正确绕过复制保护。

重要细节

  • 代码轮检查通过读取输入号码并与预期答案比较来判断是否正确,还将号码放置在 5 个不同内存位置用于后续隐藏检查。
  • 覆盖管理机制中,中断 3fh 用于加载覆盖,覆盖以 22 字节的条目表形式存在,包含资源和代码覆盖,且部分覆盖即使在快速加载版本中也被压缩。
  • 反调试检查中的一些代码故意设置误导性操作,如修改函数返回地址等,以阻止逆向工程。
  • 作者创建的修复游戏工具可去除隐藏复制保护检查等。
阅读 10
0 条评论