没有源码?给我 EXE 就够了.你想复活哪款 dos 版的游戏?我想要三国志五.
有一批软件,源代码早就不存在了。
磁盘坏了,公司倒了,程序员去世了。唯一留下来的,是一个几百 KB 的 EXE 文件。以前,这意味着这些东西永远只能在博物馆里的老机器上跑,或者靠模拟器勉强维持。
现在不一定了。
6 小时,从 EXE 到可运行的 Rust 代码
3 月 8 日,Google AI Studio 的产品负责人 Ammaar Reshi 发了一条推文:
「我让 Codex 5.4 对一款 DOS 游戏进行逆向工程,没有源代码。它已经跑了 6 个小时,我盯着根本停不下来。它解包了资源、反汇编了 EXE、重建了渲染器,用 Rust 重制了我童年最爱的 SkyRoads。」
SkyRoads 是一款 1993 年的 DOS 小游戏——在三维赛道上躲避障碍,音乐和画面放到今天还很有辨识度。它的源代码早已消失在历史里。
Ammaar 给 Codex 5.4 的,只有游戏的目录和一句提示词。
提示词只做了一件事:禁止推断
很多人看到「AI 复现老游戏」会第一反应:它是不是从网上找到了资料,或者直接编造了一个差不多的版本?
Ammaar 的提示词直接堵死了这条路:
「逆向工程这个游戏,不要推断任何内容,需要一个真正能原生运行的 1:1 移植。」
不是「做一个类似的游戏」,不是「还原这款游戏的感觉」——是 1:1,不允许推测,只能基于 EXE 里实际存在的内容。
这个约束很关键。它把任务从「创作」变成了「考古」,逼着 Codex 真正去读二进制文件,而不是靠记忆或联想填空。
Codex 实际在做什么:读 → 存 → 补丁 → 测试,循环
有人问 Ammaar:它是真的在反汇编,还是在胡编?他的回答很具体:
「不是胡编。它一直在运行完整的调试日志并移植文件,我看到它根据所有反汇编的内容进行修补。看着这一切真的令人惊叹。」
工作循环是:读取 → 存储 → 打补丁 → 直到测试通过。这实际上是经典的逆向工程流程——只不过以前需要一个有经验的程序员花几周时间,现在 Codex 用 6 个小时把它跑完了。
第一次会话跑了 3 小时 34 分钟。Ammaar 之后用 plan mode 微调了一下方向,设置好退出标准,然后它就「自己一直往那个目标冲」。
这里有一个值得注意的工程细节:清晰的退出标准(exit criteria)是让长时间自主任务跑下去的关键。没有它,agent 会迷失;有了它,agent 会自己找路。
「没有代码是安全的了」
就在 Ammaar 发这条推文的前一天,Pietro Schirano 贴出了 GPT-5.4 逆向工程 NES ROM 的过程,配了一句话:
「现在你可以用 GPT-5.4 逆向工程 NES ROM 了。再也没有代码是安全的了。」
Ammaar 回复说:「你昨天启发了我。」
这句「没有代码是安全的了」,值得在两个方向上理解。
好的一面:几十年来被锁在老硬件里的游戏、软件、工具,都有可能被重新解锁。游戏考古学家、经典软件保护者、怀旧爱好者——这扇门刚开了一条缝。
另一面:闭源不再是隐藏实现细节的可靠屏障。任何足够耐心的人,加上一个足够强的模型,都可以开始读懂「不应该被读懂」的代码。
评论区里 Tigran 说了一句话,很切中要害:
「6 小时自主 EXE 反汇编太疯狂了,但说得通。逆向工程大多是模式识别,而这正是 Codex 的用武之地。」
已经有人开始了
这条推文发出几小时内,评论区就开始点单:
▸ 有人在用 ChatGPT 5.4 反编译 SNES 游戏《Bubsy》
▸ 有人把复现 Commodore 64 和 Amiga 时代的老游戏当成 AI 副业项目
▸ Pietro Schirano 已在对 NES ROM 做同样的事
▸ Ammaar 自己的下一个目标:Red Alert 2
整个过程的代码和 prompt 也将上传 GitHub 公开分享。
能复活的不只是游戏
这件事真正的意义,不只是「Codex 很厉害」。
它意味着:源代码从来就不是理解软件的唯一入口,只是最方便的那个。EXE 里有完整的逻辑,只不过是给机器读的格式。过去人类读不快,现在 AI 可以。
那些以为「没有源码就没法移植、没法审计、没法理解」的判断,正在被重新标注有效期。
至于 Ammaar 那句「我盯着根本停不下来」——不奇怪。你在看的不是代码输出,你在看的是一件本来以为永远死了的东西,慢慢活过来。
Ammaar Reshi (@ammaar) 于 3 月 8 日发布;SkyRoads 原作 1993 年由 Bluemoon Interactive 开发;代码与 prompt 将上传 GitHub。
夜雨聆风
