案例

Snowball War:范围明确的 REA 辅助小游戏重建

作者通过 REA 的 Ghidra 工作流调查 DOS 版 Ski or Die 二进制,记录 Snowball War 的规则,再用 Rust 与 SDL2 重建这一小游戏。公开笔记区分恢复的数据表和机制、近似实现以及有意调整的表现效果。

使用条件与局限

  • 需要用户自备匹配的 DOS/EGA 游戏文件,并用 Python 3 提取素材。Linux 构建使用 Rust stable(作者测试版本为 1.93)、Cargo 和 SDL2 开发库;Cargo.toml 指定 SDL2 绑定版本 0.37。
  • 报告中的分析在解开 EXEPACK 后,通过 REA CLI 使用 Ghidra 12.1.4 和 JDK 21。调用者提供的函数与代码种子属于调用者断言,并非 Ghidra 独立发现。
  • 只重建 Snowball War,不涵盖其他比赛项目或原引擎;菜单为新写,特写动画也被有意限制在雪堡区域,没有复现原版全部出现位置。
  • 帧率近似为 35 Hz,原伪随机算法未恢复,暂停与退出按键属于近似实现,声音播放尚未实现。游戏机制测试和静态证据不能替代文档明确缺失的原 DOS 游戏运行对照。
  • 固定版本 LICENSE.md 与 Cargo.toml 提供 MIT OR Apache-2.0 双许可,README 的许可句仅提到 MIT。原美术与音频须另行提取;本合集未运行游戏或测试。

关于此条目

类型
案例
类别
REA 社区调查案例
关联
作者报告的混合工具流程
目标
游戏

来源核查于

说明依据一手来源核查,不表示已进行运行测试、安全审计或兼容性验证。

一手来源

  1. https://github.com/tuunanet/rea-ski-or-die-reconstruction/blob/0eac0671c90e21a16e663da7772b60710101ef7f/README.md
  2. https://github.com/tuunanet/rea-ski-or-die-reconstruction/blob/0eac0671c90e21a16e663da7772b60710101ef7f/Cargo.toml
  3. https://github.com/tuunanet/rea-ski-or-die-reconstruction/blob/0eac0671c90e21a16e663da7772b60710101ef7f/LICENSE.md
  4. https://github.com/tuunanet/rea-ski-or-die-reconstruction/blob/0eac0671c90e21a16e663da7772b60710101ef7f/docs/reverse-engineering-notes.md
  5. https://github.com/tuunanet/rea-ski-or-die-reconstruction/blob/0eac0671c90e21a16e663da7772b60710101ef7f/tests/gameplay.rs