GitHubのページ
出典: GitHub

コンソール専用だったゲームを、エミュレーターを介さずPC上で動かすネイティブ移植が相次いでいます。逆解析ツールをまとめる「Reverse Engineer Anything(REA)」とAIエージェントを組み合わせると、実行ファイルの調査に伴う細かな作業を進めやすくなります。ただし、ゲーム全体の再構築には大量の計算資源と検証が必要で、移植の広がりは解析の手間だけで決まるわけではありません。

REAが逆解析の作業をつなぐ

ゲームの実行ファイルを逆解析するには、プログラムを実行し、読み込むファイルやOSへの呼び出し、メモリーの使い方などを調べます。解析には実行ファイル分析、逆コンパイル、メタデータ参照など複数のツールが必要です。それぞれを使い分ける作業は細かく、手間がかかります。

REAは、こうしたツールをAIエージェントから利用できるようにまとめる仕組みです。REA自体がゲームを自動でPC向けに変換するのではなく、解析ツールや追加の指示をエージェントにつなぎ、調査の手順を進めやすくします。REAでは、エージェントが解析対象を調べ、根拠を伴う結果を返す構成を採用しています。

ゲームを細部まで調べて再構築するには、誤りを見つける検証と人による修正も欠かせません。『Modern Warfare 2』の逆コンパイルには3カ月と最大7,000億トークンが費やされた例があり、AIを使っても大規模な作業の負担がなくなるわけではありません。

バイト単位の照合で再構築を検証

AIエージェントが生成したコードには、誤りが混ざる可能性があります。そこで、再コンパイルした実行ファイルと元のバイナリをバイト単位で照合し、一致するかを確かめます。一致すれば、少なくとも実行ファイルの内容を同一に再現できたかを機械的に確認できます。

2018年の逆コンパイル研究では、候補となるソースコードを段階的に変更し、再コンパイルした結果が元のバイナリに近づくよう探索する手法が検討されました。研究では、小規模なCプログラム19件のうち10件でバイト単位の一致を達成し、一致しなかった最適化済みプログラムでも機械語命令の多くを再現したと報告しています。これはゲームやREAそのものの評価ではなく、再コンパイル結果との照合を正確さの検証に使う考え方を示した研究です。

一致するかどうかは、生成されたコードの見た目ではなく、コンパイル後の実行ファイルで判定します。元のバイナリと一部しか一致しない場合に、その範囲を区別して評価する方法も研究されました。ゲームの逆解析でも、エージェントの出力を完成品とみなさず、照合結果や実行時の挙動を確かめながら修正する必要があります。

エミュレーションとは異なる移植の方法

エミュレーターは、コンソールの動作環境をPC上で再現し、ゲームを元のシステム向けのまま実行するソフトウェアです。ネイティブ移植では、ゲームのコードや実行ファイルをPC上で直接動く形にします。一般に移植では、ゲーム機固有の機能を扱うコードを対象機器に合わせて変更する必要があります。

PS5向けには、エミュレーターを使う取り組みと、実行ファイルをPC向けにつなぎ直す取り組みがあります。SharpEmuは実ゲームの実行ファイルを読み込み、CPU命令の実行とGPU機能の一部に対応しています。動作確認済みとして10作品を掲載し、そのうち6作品は開発者によると毎秒60フレームで完全にプレイ可能です。別のエミュレーターKytyPS5の互換リストには、操作可能なゲームが134作品掲載されていますが、ゲーム進行を妨げる不具合も報告されています。

AnyPS5は、ゲーム機の環境全体を再現するのではなく、PS5向けゲームのコードをPC上で実行できる形につなぎ直すツールです。開発者によると、システムライブラリーの約76%とGPUシェーダー命令の50%に対応しており、作品によって動作状況は異なります。同じ作品でも、エミュレーターで動かす場合とネイティブ実行ファイルにする場合では、必要な仕組みと対応状況が異なります。どちらの方法でも、幅広い作品を安定して動かすには課題が残ります。

配布には権利上の争いも伴う

逆解析したコードを配布する際には、ゲームの画像や音声などの素材を含めるかどうかも問題になります。『Grand Theft Auto III』と『Vice City』の逆解析プロジェクトは、再構築に必要な画像や音楽を含まないコードを公開していましたが、Take-TwoのDMCA申立てを受けてGitHubから削除されました。

Electronic Frontier Foundationは、米国では研究や相互運用性を目的とする逆コンパイルに公正使用が認められる場合があると説明しています。一方、同プロジェクトのゲーム利用許諾契約には、ソフトウェアの逆解析、逆コンパイル、改変などを禁じる条項があります。過去には類似の禁止条項が争われた裁判例もあります。

削除後、開発者Theoは自身の複製プロジェクトについてDMCAへの異議申し立てを行い、GitHubはTake-Twoから正式な訴訟通知を受けないままコードを再掲載しました。再掲載は申し立ての法的な妥当性を確定した判断ではありません。