案例
TH095:东方文花帖 1.02a 的函数级重建
为日版 Touhou 9.5:东方文花帖 1.02a 原可执行文件重建源码;只有使用固定版本 Visual C++ .NET 2003 构建、并与单一经哈希核验的目标进行可复现字节比较后,才认定函数级一致。整个程序也能编译链接为可游玩的 Windows i386 可执行文件,而 README 将可玩性、函数匹配与整个可执行文件一致性列为相互独立的状态。
使用条件与局限
- 自动生成的 PROGRESS.md 报告:1,880 个候选中有 697 个已确认的原作函数,全部具备源码,其中 696 个达到规范一致,覆盖已确认原作字节的 99.22%;Controller::GetInput 仍有一个字节不同。README 不主张整个可执行文件逐字节一致,将语义重建列为进行中、Windows x86-64/Linux/Web 移植列为计划,并以 v0.1.0-windows-i386 标签固定可玩基线,但未附发布二进制。
- 需自备与 README 所列大小、SHA-256 和 MD5 一致的日版 1.02a 原版 th095.exe,并导入为 resources/th095.exe;游玩还需要游戏数据。README 说明仓库不含受版权保护的可执行文件、游戏数据和私有分析数据库,公开 CI 只运行不依赖目标文件的检查。
- scripts/bootstrap-tools.sh 需要 curl、git、sha256sum、tar、unzip、uv 和 Wine,随后获取以校验和固定的 Ghidra 12.1.3、Temurin JDK 21、objdiff 3.8.0,以及来自第三方存档仓库的 Microsoft Visual C++ .NET 2003(13.10.3077)二进制;reccmp 0.1.6 也固定版本。scripts/build-whole.py 从零编译并链接生产构建图,拒绝生成桩代码或强制链接的映像。
- 认定一致须通过零差异的 COFF 函数比较,并记录在匹配台账中;Ghidra、IDA MCP 和运行观察只作为辅助证据。README 引用一段使用仅供测试的无敌启动器完成的全流程运行视频,另有正常构建的单独测试;RUNTIME_ISSUES.md 注明这些检查针对 2026-09-10 的源码,之后的语义改动只经过编译和链接验证。本合集未运行任何检查。
- MIT 许可覆盖仓库代码与文档,不涵盖游戏或其素材;下载的编译器与工具各有条款。仓库包含编程智能体规则与技能以及 GPT 网页版 Ghidra 桥接,但本身未记录 REA 使用;REA 另行发表的东方重建文章讨论了此项目。此处不主张运行复现。
关于此条目
- 类型
- 案例
- 类别
- 独立重建案例
- 关联
- 独立重建项目
- 目标
- 游戏
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · N0zoM1z0/th095 · 修订 6084b36
- docs/PROGRESS.md GitHub · N0zoM1z0/th095 · 修订 6084b36
- docs/ORACLES.md GitHub · N0zoM1z0/th095 · 修订 6084b36
- docs/RUNTIME_ISSUES.md GitHub · N0zoM1z0/th095 · 修订 6084b36
- docs/TOOLS.md GitHub · N0zoM1z0/th095 · 修订 6084b36
- config/tools.lock.toml GitHub · N0zoM1z0/th095 · 修订 6084b36
- scripts/bootstrap-tools.sh GitHub · N0zoM1z0/th095 · 修订 6084b36
- .github/workflows/ci.yml GitHub · N0zoM1z0/th095 · 修订 6084b36
- LICENSE GitHub · N0zoM1z0/th095 · 修订 6084b36