REA
すべてのガイド

REA と Ghidra:どのリバースエンジニアリング手法が合う?

reverseengineeranything.tools

作業、入力、出力、手動操作、準備要件、REA 経由で Ghidra を使う方法から、REA と Ghidra を比較します。

このページの更新内容

  • — 出典付きのコミュニティ事例、実用的なガイド、根拠の明確な限界を公開しました。

ネイティブバイナリの解析プロジェクトを直接探索・編集したいなら Ghidra、コーディングエージェントや CLI にソフトウェアを調べさせ、根拠付きの発見を得たいなら REA を使います。REA はネイティブ解析のプロバイダーとして Ghidra を使えるため、両方を同じワークフローに組み込めます。

これは独立したコミュニティによる比較です。現在の機能と要件の一次情報は REA リポジトリと Ghidra リポジトリです。

REA と Ghidra の違いは?

Ghidra は、逆アセンブル、逆コンパイル、グラフ、スクリプト、対話的または自動の解析を備えたソフトウェアのリバースエンジニアリングフレームワークです。専用の解析環境で、分析者が調査を直接操作できます。Ghidra 公式 READMEは、プロセッサー、実行形式、拡張機能への対応を説明しています。

REA は、ネイティブバイナリ、JavaScript/Electron アプリ、ブラウザーページ、マネージドアセンブリなど、複数種類の対象を扱う MCP サーバー兼 CLI です。コーディングエージェントがツールを呼び出し、発見と制約を受け取り、次に調べる箇所を決めます。高度なネイティブ解析では、対応する Ghidra、Hopper、IDA のインストールに接続します。REA のネイティブガイドがこのプロバイダーとの関係を説明しています。

必要な作業は? 適した出発点 入力 出力や利点
バイナリの関数とグラフを手動でたどる Ghidra を直接使用 対応するバイナリ 完全な対話型解析環境と直接のプロジェクト操作
ネイティブ機能が特定の動作をする理由をエージェントに尋ねる REA と対応するネイティブプロバイダー バイナリと具体的な質問 エージェントが導く発見、根拠、説明
解析プロジェクトを長期にわたって維持・発展させる Ghidra を直接使用 インポート済みプログラムと分析者の変更 自分が管理する永続的なプロジェクトの作業手順
Electron のモジュールや IPC 経路を調べる REA の JavaScript ワークフロー アプリフォルダーや ASAR ネイティブエンジンなしでモジュール、関係、ソースの場所を確認
再現可能なネイティブ解析をスクリプト化する 必要な制御によってどちらでも バイナリと解析スクリプトまたは CLI リクエスト Ghidra スクリプトや REA の構造化 CLI 結果

Ghidra が向いているのは?

継続的な視覚探索、分析者による細かな変更、独自スクリプト、永続的なプログラムデータベースが作業の中心なら、Ghidra を直接使います。専用インターフェースに解析プロジェクトそのものが現れます。経験のある分析者は、各操作をエージェントへの依頼に変換せずに命令やグラフを調べられます。

REA から Ghidra を使っても、すべての Ghidra 機能が MCP に公開されるわけではありません。REA のプロバイダードキュメントに検証済みの操作とホストの制約が記載されています。REA の文書化されたヘッドレスワークフローは一時的なプロジェクトを使い、既存のユーザープロジェクトを開きません。その既存プロジェクトの維持が必要なら、Ghidra の直接操作を選んでください。

Ghidra 自体にも自動化やスクリプトのワークフローがあります。手動でしか使えないという説明は誤りです。REA の特徴は、自動化を独占することではなく、異なる対象に共通のエージェント・CLI インターフェースを提供することです。

REA が出発点として向いているのは?

調査から実装につなげる具体的な質問に REA が役立ちます。例えばエージェントが計算処理を調べ、関連命令と参照を特定し、ルールを説明して、テスト用の小さな実装を書くことができます。それでも、結論を元の動作と照合する必要はあります。

公式 DX-Ball ケーススタディは、音声呼び出しから位置をパン値に変換する補助関数をたどり、C で計算を再実装します。プロジェクトは、元の x86 に対する 3,205 件のテストと、コンパイルした関数の全 63 バイトの一致を報告しています。この結果はその特定の実例に属するもので、REA 全体の成功率や Ghidra に対する性能上の優位性を示しません。

REA はネイティブ逆コンパイル以外のワークフローも提供します。Electron アプリなら、Ghidra を起動せずに静的 JavaScript 解析でモジュールや IPC 関係を特定できます。アプリのパッケージ構造、JavaScript、一部のネイティブコンポーネントにまたがる調査では、便利な入口になります。REA の対象一覧にはそれぞれの前提条件が記載されています。

REA 経由で Ghidra を使うには?

REA のプロバイダードキュメントが対応する Ghidra リリースと JDK をインストールし、そのインストールを使うよう REA を設定します。セットアップは確認済みの既存パスを記録できますが、Ghidra や Java をダウンロード・インストールするものではありません。公式セットアップガイドに現在の設定手順があります。

最新の Ghidra がインストール済み REA パッケージと自動的に互換だと考えないでください。Ghidra の現行リリース要件と REA のテスト済みプロバイダー範囲は目的が異なります。この記事の日付では、REA の main のインストールガイドに Ghidra 12.1.x のプロバイダーチェックが記載されています。バージョンを選ぶ前にガイドとインストール済みサーバーの機能を確認してください。

プロバイダーの設定後、範囲を絞った診断には次を使います。

npx -y rea-agents@latest doctor --provider ghidra --json

Ghidra を使う操作では、初回の問い合わせ時にインポートと自動解析の時間が必要になる場合があります。大きなバイナリではプロバイダーの起動期限を長くする必要がある一方、MCP クライアントはそれより短い独自のリクエスト期限を持つことがあります。この状況の診断には期限と復旧のガイドを使ってください。

選択に影響する制約は?

REA のプロバイダー対応はホストと対象によって異なります。Windows Ghidra P0 の対応範囲は明確に実験的で、Ghidra 全体のプラットフォーム・形式対応より限定されています。Ghidra で手動インポートできるからと互換性を推測せず、Windows プロバイダーガイドを読んでください。

REA の main には、@latest でインストールした npm パッケージより新しい機能が説明される場合もあります。パッケージが動くことだけでは、main のすべての操作が利用できるとは分かりません。リリースの境界と接続中ツールのスキーマを確認してください。

どちらのワークフローにも判断が必要です。逆コンパイルした疑似コードは元のソースではなく、間接的な動作は未解明のまま残ることがあり、エージェントが正しい根拠を誤読する場合もあります。重要な結論は、関連命令、参照、条件を揃えた動作確認で裏付けてください。

REA と Ghidra でよくある質問は?

REA は Ghidra に置き換わる?

REA は Ghidra をエンジンとして使えますが、Ghidra の完全な対話型環境を置き換えません。作業に合うインターフェースを選ぶか、組み合わせます。

どちらかは無料?

REA 自身のコードは MIT ライセンスです。Ghidra は公開ライセンスと第三者通知を持つオープンソースプロジェクトです。エージェントのモデル利用と、Hopper や IDA など任意の有料プロバイダーには別の条件があります。REA のライセンスと Ghidra のライセンスをご覧ください。

Ghidra なしで JavaScript を調べられる?

はい。REA の静的 JavaScript/Electron ワークフローはネイティブ逆コンパイラーではなく、Node.js と npm を使います。アプリ内のネイティブアドオンは別の解析対象で、独自の要件があります。

初心者はどちらを先に試すべき?

アセンブリや手動のバイナリ解析を学ぶなら、Ghidra 自身の教材から始めます。質問を起点とするエージェント調査を学ぶなら、REA の Notes の例か、当サイトの REA セットアップガイドから始めます。小さな対象と確認可能な質問を選ぶと、どちらも評価しやすくなります。