AI逆向工程实战,三个月重建《现代战争2》源码,83%函数字节级匹配

独立开发者Maurice Heumann带领团队耗时三个月,利用多组AI Agent成功逆向重构《使命召唤:现代战争2》PC版源代码,99%函数已重建,其中83%通过逐字节匹配验证。项目关键转折在于引...

人工智能

2026年10月,一则关于AI逆向工程的实践案例在技术社区引发广泛关注:独立开发者Maurice Heumann(momo5502)与其协作团队,历时三个月,将2009年发布的《使命召唤:现代战争2》(Call of Duty: Modern Warfare 2)PC版二进制程序完整反编译并重建为C++源代码。最终成果显示,约99%的函数已被还原,其中83%在编译后与原版EXE文件实现逐字节精确匹配——这一数字远超此前同类尝试的预期。

该项目并非单纯依赖大模型“暴力生成”,而是一次系统性的工程闭环实践。初期阶段,团队仅部署4个AI Agent:3个负责从IDA反汇编结果生成C++代码,1个担任Code Reviewer。首月即完成80%函数翻译,游戏主界面甚至可正常启动加载地图。然而深入排查发现,逻辑层面存在严重偏差:函数签名错乱、结构体布局失真、全局配置被错误替换为低效哈希表,导致运行性能断崖下跌。问题根源在于缺乏客观校验标准——Reviewer Agent易受工作者附带的伪注释误导,形成非预期的Prompt Injection,陷入“语义自洽但行为错误”的陷阱。

真正的质变发生在项目第二个月:团队果断弃用主观评审机制,转而建立以“逐字节匹配”为核心的机器验收裁判(Byte-matching Decompilation Oracle)。具体流程为:AI生成C++源码 → 使用与原版相同的Visual Studio 2008编译器生成OBJ → 提取目标函数对应二进制段 → 跳过重定位字段(relocation),比对符号名、RVA偏移、数据内容及类型信息 → CI系统输出绝对客观的PASS/FAIL。

  • 禁止内联汇编、裸函数、目标文件补丁与嵌入机器码;
  • CI构建前强制校验验证脚本SHA256哈希值,并与GitHub Actions Secret中预存值比对;
  • 对提交代码进行静态扫描,拦截__asm等绕过关键词。

这套硬性验收体系不仅提升了结果可靠性,还显著优化了资源投入。早期依赖Claude Opus 5.5、Sonnet 5等高成本模型,累计消耗估算达6000亿–7000亿Token;引入Oracle后,成本更低的Haiku与Luna模型也能产出有效输出。项目后期稳定运行14个Luna + 2个Opus 5.5代理,综合开销降至约1200欧元(订阅制),较理论API计费模式下降超90%。

值得注意的是,83%的字节匹配率并非全部函数的终极目标。剩余未匹配函数中,部分差异源于编译器行为(如寄存器分配、函数内联、COMDAT折叠),开发者评估其语义仍正确;继续追求剩余函数的字节一致将大幅增加Token消耗,却难以改善实际运行效果。Heumann明确表示,出于版权考虑,重建代码不会公开,仅限个人使用——这意味着外部开发者无法直接复现全部成果,但其工程方法论已具普适参考价值。

旧方式依赖Agent互审,新方式采用字节匹配+CI校验

该项目也折射出当前AI辅助开发的深层挑战。一方面,REA(Reverse Engineer Anything)等工具正快速降低逆向门槛:用户只需指令“分析某App搜索功能并复现”,Agent即可调用Ghidra、IDA via MCP接口自动取证与编码。DX-Ball打砖块游戏案例中,AI还原的音效处理函数经3205组测试验证,63字节完全匹配原版。另一方面,大规模自主Agent运行暴露出基础设施风险——曾有代理因命令格式错误误删虚拟机,导致进度与日志丢失。Heumann正将用户空间模拟器Sogen改造为轻量级AI沙箱,以增强隔离性与容错能力。

从技术演进角度看,此次实践标志着AI编程从“能跑通”迈向“可验证”。过去数十年,遗留系统重构高度依赖专家经验与人工校验;如今,通过将机器验收标准嵌入CI流水线,可构建防幻觉、防作弊的自动化重构闭环。这不仅适用于游戏逆向,也为金融、工业控制等关键领域老旧系统现代化提供新路径——前提是,必须放弃对“智能体自我审查”的幻想,回归软件工程最朴素的原则:没有自动化校验的生成,只是在加速技术债务的累积。

目前,该项目验证工具链已开源部分组件,包括字节匹配Oracle核心逻辑与CI防篡改模块。尽管完整代码因版权限制未公开,其工程架构与决策逻辑已在多篇技术复盘中详述,为后续类似实践提供了可落地的参照框架。