案例

TicTacToe-AI:REA 分叉对单个游戏方法的有限重建

作者的 REA 分叉(发帖时名为 rea-engine,后更名为 RE-Agent)反编译 GPL 许可的 TicTacToe-AI 游戏所发布的 .NET 可执行文件,重新编译恢复出的 C# 与资源,并依据原始 IL 修复一处反编译错误。差分探针在一个状态判定方法的全部 19,683 种棋盘赋值上运行原版与重建代码,并比较六张窗体渲染图。报告只判定该方法通过,整个游戏仍属部分重建。

使用条件与局限

  • 所审阅的 develop 提交(2026-10-15)报告 CheckGameStatus 在其声明的 3^9 棋盘输入域上功能通过(Feature PASS),整个游戏为部分重建(PARTIAL)。AI 落子与随机数、菜单、计时和声音均未验证,可执行文件并非逐字节相同,原始终端捕获也相差一个回车符。因此帖子中“逐字节一致”的说法仅适用于结构化棋盘记录和六张渲染 PNG,而非整个程序。
  • 输入是 tatlead 的 GPL-3.0 仓库所发布的 TicTacToe-AI 可执行文件,报告以 SHA-256 标识。仓库随 GPL 文本一并再分发该文件,并为履行许可义务保留一份源码归档;“重建过程中未参考该源码”属于作者报告。
  • 该分叉需要 Node.js 22.19+ 或 24.11+;恢复步骤使用 ilspycmd 以及本机 Roslyn 编译器和 Mono 引用,脚本默认指向 macOS 上的 Homebrew 路径。验证需要本地 X11 显示和 Mono/libgdiplus。记录的运行环境是 ARM64 上的 macOS 15.3.1 加 Xvfb,因此两张渲染图都来自同一 Mono 运行时,而非原生 Windows。
  • 脚本先重新恢复出副本,再由探针执行原版与重建程序集,逐一比较每种棋盘的返回值和指示状态字节,并在按钮操作序列后捕获 Form.DrawToBitmap 图像。当前结果 JSON 记录棋盘记录零差异、terminalBytesEqual 为 false。本目录阅读了报告与脚本,未运行可执行文件、工具或探针。
  • 该分叉采用 MIT,保留 morluto 的 REA 版权声明,并列出 Ghidra、Frida 等可选引擎及其各自许可;游戏及其重建负有 GPL-3.0 义务。分叉特有的代码不在上游 REA 版本中;仓库在发帖后更名,帖子中的 rea-engine 链接现会重定向到 RE-Agent。

关于此条目

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

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

一手来源

  1. benchmarks/native-windows-ports/reports/targets/tictactoe.md GitHub · heaven-hm/re-agent · 修订 a84c61e
  2. benchmarks/README.md GitHub · heaven-hm/re-agent · 修订 a84c61e
  3. docs/verification/rea-engine/game-report-current-2026-10-14.json GitHub · heaven-hm/re-agent · 修订 a84c61e
  4. scripts/recover-tictactoe-replica.mjs GitHub · heaven-hm/re-agent · 修订 a84c61e
  5. scripts/verify-tictactoe-reconstruction.mjs GitHub · heaven-hm/re-agent · 修订 a84c61e
  6. scripts/benchmarks/TicTacToeProbe.cs GitHub · heaven-hm/re-agent · 修订 a84c61e
  7. benchmarks/tictactoe/LICENSE GitHub · heaven-hm/re-agent · 修订 a84c61e
  8. README.md GitHub · heaven-hm/re-agent · 修订 a84c61e
  9. THIRD_PARTY_NOTICES.md GitHub · heaven-hm/re-agent · 修订 a84c61e
  10. LICENSE GitHub · heaven-hm/re-agent · 修订 a84c61e
  11. package.json GitHub · heaven-hm/re-agent · 修订 a84c61e
  12. https://github.com/tatlead/TicTacToe-AI/tree/ce0f81b05e190dcfb72ea68c5fbb1114fa994a5a