geogeo28/atari_reverse
GitHub: geogeo28/atari_reverse
一套将 Atari ST 二进制程序逆向为经逐字节验证的可读 C 代码并制作像素一致重制版的完整工具链与方法论框架。
Stars: 0 | Forks: 0
# Atari ST — 从二进制到重制版
从一款失落的 1988 年 Atari ST 游戏发布的可执行文件中将其复原:反汇编它,为每一个
函数命名,将其重写为可读的 C 语言代码,并**证明其与原始机器码逐字节一致**,然后
构建一个在像素级别上与**原版绘制效果完全一致**的免费优化重制版——并将其重新
在 68000 上运行。
/
└── projects// per-game: names.txt · decomp.c · recreate/ · remaster/ · docs/
```
## 文档
十三份领域指南,每一份都基于 Buggy Boy 的真实证据编写,但旨在作为通用流程。请先从 [`docs/00-overview.md`](docs/00-overview.md) 开始,了解端到端的工作流程和“这是什么类型的文件?”决策树,然后阅读 [`docs/agent-playbook.md`](docs/agent-playbook.md),了解将所有内容串联起来的验证闭环。完整索引:[`docs/README.md`](docs/README.md)。
| | |
|---|---|
| [binary-formats](docs/binary-formats.md) | 解析 `.PRG`/`.TOS`/`.TTP`、其文件头、符号和重定位信息 |
| [packed-executables](docs/packed-executables.md) | 入口处是乱码——在分析之前先通过 Hatari 解压 |
| [m68k-disassembly](docs/m68k-disassembly.md) | 阅读 68000 汇编,避免大范围反汇编不同步,识别跳转表 |
| [ghidra-pipeline](docs/ghidra-pipeline.md) · [ghidra-gui](docs/ghidra-gui.md) | 无头模式驱动 Ghidra,然后进行交互式探索 |
| [tos-os-calls](docs/tos-os-calls.md) | GEMDOS/BIOS/XBIOS/GEM 调用、basepage、loader |
| [hardware-map](docs/hardware-map.md) | 视频/声音/MFP/IKBD 寄存器、中断、Line-A |
| [graphics](docs/graphics.md) · [sound](docs/sound.md) | 位平面位图、调色板、RLE;YM2149 驱动程序 |
| [on-target-execution](docs/on-target-execution.md) | 在真实硬件上运行已验证的重构代码 |
| [methodology](docs/methodology.md) | 真正的命名方式:锚点 → 向外推演、验证、迭代 |
## 将其用于其他二进制文件
除了 `projects/buggyboy/` 之外,上述内容均非 Buggy Boy 专属。`new_project.sh` 可以为新的目标文件搭建骨架,Ghidra 脚本和命名循环适用于任何 GEMDOS 可执行文件,并且差分测试工具模式可以整体迁移——只需替换入口地址和内存镜像即可。如果入口点反汇编出来的是乱码,说明该二进制文件是被压缩过的;`prg_dis.py` 会打印出信息熵,并且 [`docs/packed-executables.md`](docs/packed-executables.md) 介绍了如何在 Hatari 中对其进行实时解压,以及如何分析内存转储。
这不是原版程序的截图——该帧是由重构代码绘制的:其道路光栅化器、滚动 blitter、对象调度器和 HUD,均基于游戏自身的 COURSES.DAT 绘制。
标签:JS文件枚举, 客户端加密, 逆向工具