REA:Ghidra、Hopper、Claude Codeに対応した新たなAI搭載リバースエンジニアリングツール

「Reverse Engineer Anything」の略称であるREAは、AIコーディングエージェントとリバースエンジニアリングツールを接続し、ネイティブバイナリやアプリケーション、実行時の挙動を詳細に解析できるようにします。

このオープンソースプロジェクトは、ネイティブ解析プロバイダーとしてGhidra、Hopper、IDAをサポートしています。また、Model Context Protocol(MCP)を通じて、Claude Codeなどのエージェントと連携します。

REAは、既存の逆アセンブラに取って代わるものではありません。エージェントがソフトウェアを調べ、関連するコードを追跡し、追加の証拠を要求するためのインターフェースを提供します。

Morlutoによる解析結果には、裏付けとなるアーティファクトと制約事項が含まれます。これにより、エージェントはソースコードにアクセスできなくても、観測された挙動を説明したり、再構築した実装を開発・検証したりできます。

ネイティブの実行ファイルやライブラリに対しては、REAは疑似コード、アセンブリ命令、文字列、シンボル、呼び出し、参照を提供します。ネイティブコードの詳細な解析には、Hopper、Ghidra、IDAのいずれかをインストールして設定しておく必要があります。

各プロバイダーの機能や対応するホスト環境は異なり、WindowsでのGhidraのサポートは現時点では実験的なものです。このほか、Ghidraは16ビットのDOSプログラムを対象とした調査にも対応しています。

JavaScriptやElectronのワークフローでは、モジュール、インポート、ソースマップ、ルート、プロセス間通信の関係、ネイティブアドオンとの接続を復元します。

Image

この機能により、調査担当者はレンダラー、プリロード、メインプロセスの境界をまたいで挙動を追跡できます。JavaScriptの静的解析には、ネイティブのデコンパイラは必要ありません。

一方、.NETの解析では、メタデータ、共通中間言語(CIL)の命令、宣言されたネイティブ依存関係、ビルド間の比較結果が得られます。

ツールキット全体では、Android APK、ファームウェア、WebAssemblyアーティファクト、保存されたネットワークキャプチャ、記録されたLinuxのクラッシュも対象とします。

ワークフローごとに前提条件があります。Androidのデコンパイルにはフル版のJDKとJADXが必要です。ファームウェアの抽出はLinux環境でのBinwalkまたはUnblobに依存します。一部のバイナリ診断では、利用者が用意したpwntoolsが求められます。ブラウザの検査にはChrome系ブラウザが必要です。

利用者は、`npx rea-agents setup`を実行して連携を設定できます。このセットアップでは、REAのMCPサーバーを登録し、互換性のある調査用の指示をインストールし、既存の設定をバックアップします。

エージェントを再起動する前に、提案された変更内容を確認して承認するよう求められます。対応クライアントはClaude Code、Codex、Cursor、Gemini CLI、Grok Buildで、その他の互換クライアントでも手動で登録すれば利用できます。

REAが対応する解析機能

解析対象 主な出力 必要なツール
ネイティブバイナリ 疑似コード、アセンブリ、文字列、シンボル、呼び出し、参照 Ghidra、Hopper、またはIDA
JavaScript / Electron モジュール、インポート、ソースマップ、ルート、IPC、ネイティブアドオンとの関係 Node.jsとnpm
.NETアセンブリ メタデータ、CIL命令、ネイティブ依存関係、ビルド間の比較 追加の解析エンジンは不要
Android APK マニフェストの宣言、クラス、デコンパイルされたメソッド、参照 ヘッドレスJADXとフル版JDK
ファームウェア 特定された領域、抽出されたアーティファクト、ネイティブ解析への引き渡し Linux上のBinwalkまたはUnblob
Webサイト ページ構造、スクリプト、ネットワークの観測結果、要求されたスクリーンショット Chrome系ブラウザ
Goバイナリ 埋め込まれたコンパイラのバージョン、モジュール、置換、ビルド設定 組み込みの静的検査(Goのインストールは不要)
プロセスの挙動 ターミナル出力、操作、終了ステータス、ファイルシステムの観測結果、実行間の比較 ネイティブPTYを備えたLinux/macOS

REAにはnpmと、Node.jsのバージョン22.x(22.19以降)、24.x(24.11以降)、または26以降が必要です。

ターミナルでのワークフローも、エージェント主導の調査と同じ解析の仕組みを利用します。たとえば、展開済みのJavaScriptアプリケーションのディレクトリやElectronのASARアーカイブを検査し、構造化されたJSON形式で結果を返すコマンドがあります。

REAは対象をローカルで解析しますが、解析結果が完全にオフラインにとどまることは保証されません。エージェントはツールの実行結果を受け取り、そのモデルプロバイダーには別途データポリシーが適用されるためです。

JavaScriptと.NETの静的検査では、アプリケーションは実行されません。ただし、実行時のキャプチャでは、現在のユーザーの権限で対象を起動したり、対象とやり取りしたりすることがあります。

プロジェクトによると、ゲーム「DX-Ball」の再構築に成功し、元のx86のテストケース3,205件に合格したほか、コンパイル済みの関数バイト63個を再現したといいます。

この成果が示すのは、検証済みの再構築が可能であることであり、あらゆる対象で正確に再現できることではありません。REAはMITライセンスで公開されており、許可を得た合法的な研究での利用を想定しています。

影響が出る前にサイバー脅威を阻止し、MTTRを21分短縮。ANYRUNのサンドボックスをSOCに導入。

翻訳元: https://gbhackers.com/rea-new-ai-powered-reverse-engineering-tool/

本記事は gbhackers.com の記事を翻訳・要約したものです。