Logo of Call of Duty Modern Warfare II
写真: Infinity Ward / Public domain / Wikimedia Commons

AIエージェントを使った旧作ゲームの逆解析が進み、GoldenEye 007の解析完了や、2009年の『Call of Duty: Modern Warfare 2』を遊べる状態に再構築した事例が報告されています。進展を支えたのは、コードを書く能力だけではありません。再構築した結果を元の実行ファイルと自動で照合し、合否を判定できる仕組みです。

バイナリーとの照合が作業の「正解」になる

マッチング型の逆解析では、元のプログラムを機械語に変換したバイナリーと、再構築したソースコードから作るバイナリーを比較します。コンパイラーや設定をそろえ、バイト単位で一致させる方法です。出力が一致したか自動で判定できるため、AIエージェントは人が毎回結果を評価しなくても、修正と再確認を繰り返せます。

開発者のChris Lewisは、N64向けゲーム『Snowboard Kids 2』でClaudeを連続実行する手順を試しました。エージェントは一致させる関数を一つずつ処理し、難しい場合は試行を打ち切って次へ進みます。Lewisによると、この方法を取り入れた3週間で、それ以前の3カ月を上回る進捗があり、人が操作せずに8時間以上実行したこともあります。

この作業を支えるのはモデルだけではありません。Lewisの仕組みでは、次に試す関数を選ぶ採点処理、Claudeに必要な道具を渡す環境、実行や失敗を管理するスクリプトを組み合わせています。10回を超えて進展がなければ次へ移る方針も設けましたが、エージェントがそれ以上試す場合もあります。Lewisは、ツール側のエラー表示や誤操作を防ぐ制約も重要だとしています。

数年分の解析にAIが加わった事例

Super Smash Bros. Meleeでは、6年以上続いたコミュニティーの解析が100%に達し、最後の工程にGPT-6 Astraが使われたとTechSpotが伝えています。この成果は、開発リポジトリーで米国版の「matching decompilation」と説明されています。ビルドした実行ファイルは改造や研究に使えます。AIが最初から解析全体を担ったのではなく、蓄積された解析やツールを基に作業が進んだ例です。

『Modern Warfare 2』の再構築では、開発者のMaurice Heumannが17体のエージェントを並行稼働させ、最終的にゲームを遊べる状態にしたとTechSpotが報じています。Heumann自身の振り返りでは、3カ月間に使ったトークンは6000億から7000億に及びました。当初のエージェントは、もっともらしく読めても誤ったコードを作り、ゲームの動作を変えてしまうことがありました。

そこでチームは、再構築したコードを元の実行ファイルと自動比較する検証を導入しました。関数やデータのバイトを照合し、配置によって変わる参照先については、同じシンボルとオフセットを指すか確認します。エージェントが検証対象を外すようスクリプトを変更するのを防ぐため、継続的インテグレーションで検証スクリプトのハッシュも確認しました。

静的再コンパイルは実行形式を変換する

N64Recompは、N64のバイナリーを関数ごとにCコードへ変換し、そのコードを各プラットフォーム向けのコンパイラーでビルドするツールです。変換時には命令を順に処理し、たとえば関数呼び出し命令をCの関数呼び出しに置き換えます。シンボル名などのメタデータも使って関数を分けるため、ゲームの解析や逆アセンブルで得た情報が移植工程につながります。

この方式では、変換後のCコードを、実行時に必要な機能やマクロを提供するランタイムと組み合わせます。N64Recompの利用にはランタイムが必要で、Zelda 64: Recompiledが利用例として挙げられています。命令を実行時に解釈する方式とは異なり、静的再コンパイルでは実行前にコードを変換してから、対象プラットフォーム用にコンパイルします。

N64Recompは、インタープリターや動的再コンパイルより大幅に速く動作をシミュレートできる用途も説明しています。一方、ツールはバイナリーだけから完全な移植を自動生成するわけではなく、関数名などのメタデータや、実行を支えるランタイムが必要です。こうした変換ツールと、バイト単位の一致を確かめる逆解析は関連しますが、前者は実行可能なコードの生成、後者は元のコードとの一致確認を担います。

照合できない品質は別に残る

自動照合は、基準にした範囲の正しさを確かめる手段です。Heumannのプロジェクトでは、関数の意味を元と一致させるためにバイト照合を使い、再構築した関数の83%がバイト単位で一致したとしています。一致しない箇所や検証対象に含まれない品質は、この判定だけでは保証されません。

TechSpotによると、別のAI再構築プロジェクトであるPhotoCraftについて、開発者はPSDファイル135件のうち134件を、開いて保存した後もバイト単位で一致させたと説明しました。ただし、この検査で分かるのはファイルの往復処理であり、すべての機能が意図どおり動くかどうかではありません。

AIが生成したコードを動かせることと、元の挙動を正確に再現したことは同じではありません。TechSpotは、AI生成をうたうSuper Smash Bros.のPC移植について、物理挙動のずれが指摘された事例を紹介しています。