REA について
REAは、ソースコードなしでソフトウェアを調査する開発者やエージェント向けのコマンドラインツール兼MCPサーバーです。バイナリ、アプリ、ウェブサイト、実行時の挙動を分析し、根拠と結論の制約も示します。
主な機能
- 01ネイティブバイナリとアプリ形式の分析
- 02JavaScript、Electron、.NET、ウェブサイトの調査
- 03実行時の挙動とネットワークデータの記録
- 04根拠と分析上の制約の提示
活用シーン
- 01アプリ機能の仕組みを追跡
- 02バイナリやパッケージアプリの調査
- 03複数回のプロセス実行を比較
MCP 対応
REAはMCPクライアントにリバースエンジニアリング用ツールを公開し、対象の調査や関連コードの追跡を可能にします。CLIでも同じワークフローを利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
170掲載時のツール一覧 · 3 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| name | any | いいえ | この操作で使用する正確な名前。 |
| comment | any | いいえ | 通常のエントリーコメント。空にすると消去されます。 |
| procedure | any | はい | |
| inline_comment | any | いいえ | インラインのエントリーコメント。空にすると消去されます。 |
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
英語 · 简体中文 · 繁體中文 · 日本語 · 한국어 · Türkçe · Русский · Tiếng Việt · ไทย · Deutsch · Español · Français · Українська · Polski · Português (Brasil) · العربية · فارسی · Bahasa Indonesia · Italiano · Ελληνικά · മലയാളം
REA:あらゆるものをリバースエンジニアリング
バイナリ、アプリケーション、実行時の動作を横断してリバースエンジニアリングする、ひとつの MCP。
気になる機能を見つけたら、その仕組みをバイナリレベルまで理解しましょう。
クイックスタート · REA の仕組み · 解析できる対象 · ショーケース · FAQ · ドキュメント
npx rea-agents setup
重要
REA は morluto/rea、 rea.tools、または rea-agents npm パッケージから入手してください。 インストールとリリースへのリンクは、これらの公式ソースからたどってください。似た名前の リポジトリやコピーされた README は、ダウンロードが公式であることの根拠にはなりません。
アプリで見つけた機能を自分のプロダクトにも取り入れたいと思ったことはありませんか?エージェントに REA を使って調査するよう依頼してください。ソースコードがなくてもアプリを調査し、その機能の仕組みを説明し、根拠を示して、プロジェクト向けの実装を作成できます。
REA は、ネイティブバイナリ、JavaScript および Electron アプリ、.NET アセンブリ、ウェブサイトを調査するツールにエージェントを接続します。同じツールはターミナルからも使用できます。解析はローカルで実行され、結果には各結論の根拠と制約が含まれます。
セットアップを行うと、REA がエージェントに登録され、対応するワークフロー手順がインストールされます。ネイティブ解析には、既存の Hopper、Ghidra、または IDA のインストールを使用できます。承認すれば、セットアップ時に Hopper をインストールすることもできます。静的な JavaScript 解析には、ネイティブ解析エンジンは必要ありません。
REA のウェブサイトを見る:セットアップ手順、図解ガイド、実際の事例をご覧いただけます。
クイックスタート
Linux では、Ghidra、JADX、ファームウェアツールの起動、および静的な JavaScript/Electron
解析で、プロセス所有者の確認を行うために、REA の PATH 上に procps 互換の
ps が必要です。復旧手順は docs/installation.md の
「Linux owned-process prerequisite」に記載されています。
エージェントをセットアップする
Node.js と npm をインストールした状態で、次を実行します。
npx rea-agents setup
エージェントを選択し、提案された変更を確認して承認します。セットアップでは、REA の MCP サーバーと対応するワークフロー手順を追加し、既存の設定をバックアップします。その後、エージェントを再起動してください。
セットアップは Claude Code、Codex、Cursor、Gemini CLI、Grok Build、および その他のエージェントに対応しています。プロバイダーの設定と MCP の手動登録については、インストールとセットアップを参照してください。
エージェントに質問する
Understand how search works in the Notes app, show me the evidence, and build a
similar feature for my project.
Notes を、調べたい対象アプリと理解したい機能に置き換えてください。
ターミナルを使う
展開済みの JavaScript/Electron アプリのディレクトリまたは ASAR を調べます。
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
結果には、モジュール、インポート、Electron の境界、およびそれらを裏付ける証拠が含まれます。
パスは対象のものに置き換えてください。たとえば Windows では "D:/apps/example" のように指定します。
rea コマンドを通常利用できるようにインストールするには、次を実行します。
npm install --global rea-agents
rea --help
ネイティブ解析を行うには、先にプロバイダーを設定してください。ネイティブコマンド、プロバイダーの選択、 スナップショット、およびスクリプトについては、CLI と Evidence ガイドを参照してください。
REA を更新する
REA は頻繁に変更され、新しいリリースにはバグ修正が頻繁に含まれます。インストールを最新の状態に保ってください。
npm install --global または bun add --global でインストールした CLI の場合:
rea update
rea --update は、この検証済みワークフローのエイリアスで、同じグローバル出力フラグを受け付けます。他のコマンド制御と組み合わせる場合は、rea update を使用してください。
アップデーターのコマンドでは、stdout と stderr を合わせて最大 4 MiB まで保持します。コマンド終了後にサイズ超過のメタデータ応答は拒否されます。詳細なインストールは、診断情報を制限したうえで続行します。人間向けの進行状況出力では、ターミナルのバックプレッシャーを尊重し、送信済みの書き込みが完了するまで待機します。
Bun のグローバル更新には Bun 1.2.17 以降が必要です。それ以前の Bun を使用している場合は、rea update を実行する前に Bun を手動でアップグレードしてください。
エージェントの登録とスキルを更新するには、アップデートで表示されたセットアップコマンドを実行します。
npx を使用している場合は、次のコマンドでエージェントのセットアップを更新します。
npx rea-agents@latest setup
セットアップの変更を確認してから、エージェントを再起動してください。単発の CLI コマンドには、コマンドに続けて npx rea-agents@latest を使用します。Bun を使用する場合は、npx rea-agents@latest の代わりに bunx rea-agents@latest を使用してください。
REA の仕組み
エージェントは MCP を介して REA を呼び出し、対象を調べて関連するコードを追跡します。 REA は証拠を添えて調査結果を返します。エージェントはそれを使って追加の質問をしたり、動作を説明したり、実装を作成してテストしたりします。 CLI コマンドも同じワークフローを使用します。
解析できる対象
REA には Node.js 22.x (>=22.19)、24.x (>=24.11)、または 26 以降と、npm が必要です。 追加のツールやホストのサポートは対象によって異なります。
| 対象 | REA が返す内容 | 要件とガイド |
|---|---|---|
| デスクトップへのインストール | ランタイム候補、サポートファイル、コンポーネントマーカー、次の調査項目 | 組み込みの制限付きディレクトリ/ヘッダー検査;デスクトップアプリケーション |
| ネイティブバイナリ | 疑似コード、アセンブリ、文字列、シンボル、呼び出し、参照 | Hopper、Ghidra または IDA;ネイティブ解析 |
| オフライン ELF レイアウト | セクション、セグメント、元のシンボル/再配置、静的な緩和策候補 | 呼び出し元が用意する Linux x64 上の pwntools;バイナリ診断 |
| Go バイナリ | 埋め込みコンパイラーバージョン、モジュール、置換、ビルド設定 | 組み込みの静的 ELF/PE/thin Mach-O 検査;Go のインストールは不要 |
| IL2CPP メタデータ | Unity の global-metadata.dat に含まれるアセンブリイメージ、型名とメソッド名、インデックス範囲 | バージョン 29、31、39 の組み込み静的デコード;Unity は不要 |
| Rust バイナリ | 埋め込み cargo-auditable のクレート名、バージョン、ソース、依存関係のエッジ | 組み込みの静的 ELF/PE/thin Mach-O 検査;Rust バイナリ |
| WASM アーティファクト | 検証、セクション、正確なインポート/エクスポート WAT 形式、デコード済み WAT | 呼び出し元が用意する WABT 1.0.42;inspect_wasm_artifact |
| EVM バイトコード | ディスパッチセレクター、バイトオフセット、推定引数、可変性 | Linux x64 上のローカル raw/hex キャリア;オフライン EVM ガイド |
| SQLite データベース | テーブル、列、インデックス、ビュー、トリガー、選択した通常テーブルの行 | ローカルのデータベース/WAL スナップショット;ネイティブ SQLite の制限を伴う Node.js 24.x >=24.15 または 26+ |
| 記録済み Linux クラッシュ | 生のノート、記録されたすべてのスレッドのレジスター/シグナル、任意のマッピング候補 | 呼び出し元が用意する Linux x64 上の pwntools;任意で GDB/pwndbg;記録済みクラッシュ |
| JavaScript/Electron | モジュール、インポート、ソースマップ、ルート、IPC、ネイティブアドオンの関係 | Node.js と npm;Linux:procps 互換の ps;アプリケーション解析 |
| ウェブサイト | ページ構造、スクリプト、ネットワーク観測結果、要求されたスクリーンショット | Chrome 系ブラウザー;ブラウザー解析 |
| 保存済みネットワークキャプチャ | リクエスト、レスポンス、公開されたペイロード、ソース位置 | HAR または Fiddler Everywhere SAZ;ネイティブ mitmproxy 用の Linux 上の mitmdump;キャプチャガイド |
| .NET アセンブリ | メタデータ、CIL 命令、宣言されたネイティブ依存関係、ビルド比較 | なし(静的解析のみ);マネージコードガイド |
| Android APK | マニフェスト宣言、クラス、逆コンパイル済みメソッド、参照 | Linux/macOS/Windows x64 上のヘッドレス JADX とフル JDK;Android ガイド |
| Android デバイス | デバイス、パッケージ、プロセス、ログ、ダンプ、スクリーンキャプチャ、APK/ファイル転送 | 呼び出し元が用意する adb(エミュレーターまたは実機);ADB ガイド |
| JEB プロジェクト | エンジンに支えられたプロジェクトユニット、アーティファクトダイジェスト、型/メソッドの疑似コード | 呼び出し元が起動した MCP を提供する JEB クライアント。REA_JEB_MCP_URL で選択;JEB ガイド |
| Android リソース | デコード済みマニフェスト、文字列テーブル、ロケール、バージョン情報 | 呼び出し元が用意する Apktool ランチャー;リソースガイド |
| Flutter アプリ | Dart スナップショットハッシュ、ABI ごとのライブラリダイジェスト、エンジンビルドの来歴 | なし(静的 APK 解析);Flutter ガイド |
| ファームウェア | 領域、抽出結果、ネイティブ解析への引き継ぎ | Linux 上の Binwalk/Unblob;ファームウェアガイド |
| 記録済みパケット | 選択したフィールド、繰り返し値、フィルター、デコード方法ルール | Linux:TShark 4.x + prlimit;キャプチャガイド |
| パケットの概要 | エンドポイント、DNS、TLS SNI、プロトコル分布、HTTP リクエスト | 呼び出し元が用意する tshark と capinfos(Linux で検証済み);pcap ガイド |
| 記録済み論理信号 | デコーダーの注釈、サンプル範囲、診断情報 | Linux:sigrok-cli 0.7.2 + prlimit;信号記録 |
| パッケージとリソース | ファイル一覧、ダイジェスト、plist、Apple バンドルの構造、抽出済みリソース | アーティファクトと JavaScript のガイド、Apple アプリケーション |
| プロセスの動作 | ターミナル出力、操作、終了とファイルシステムの観測結果、実行比較 | ネイティブ PTY を備えた Linux/macOS;プロセスキャプチャ |
| 静的な JavaScript および .NET の検査では、アプリケーションを実行せずに提供されたファイルを読み取ります。ランタイムキャプチャでは、ユーザー権限を使って選択した対象を実行または操作します。各ランタイムガイドで、その影響について説明しています。 |
オフラインでのネイティブバイナリ検査では、REA は呼び出し元が用意した GNU objdump と Rizin もサポートしています。プロバイダーのセットアップ、CLI コマンド、 Evidence の制限については、リバースエンジニアリングツールガイド をご覧ください。REA はどちらのプロバイダーもインストールまたは更新しません。
ネイティブ形式とホストのサポート状況はプロバイダーによって異なります。
Hopper と Ghidra のセットアップ、(任意のネイティブ MCP ブリッジを含む)
IDA ガイド、Kuna デコンパイラーガイド、
および実験的な Windows Ghidra サポートをご覧ください。
Ghidra は16 ビット DOS の解析にも対応しています。
大きなバイナリを扱う場合は、
REA_GHIDRA_STARTUP_TIMEOUT_MS または REA_HOPPER_STARTUP_TIMEOUT_MS を使って
プロバイダーの起動期限を延長してください。プロバイダーの選択については、
CLI ガイドをご覧ください。
最新の npm リリース以降に追加された機能については、リリースの提供状況
をご確認ください。
活用事例
DX-Ball:サウンドパンの計算を再構築する
サウンド呼び出しから位置をパンに変換するヘルパー関数をたどり、命令を調べ、 不完全な擬似コードを C に変換します。この再構築は 3,205 件の 元の x86 のケースを通過し、コンパイル済み関数の 63 バイトすべてを再現します。
Notion:Electron のクリップボードブリッジをたどる
レンダラーのクリップボード API を見つけ、preload と IPC を経由して メインプロセスまでたどり、リッチクリップボード形式を調べます。
TH04:DOS の弾幕リング計算を復元する
オリジナルの PC-98 ゲームの 16 ビット命令を調べ、固定角度と 照準角度の計算を復元し、再構築した C++ と 当時のコンパイラー出力を比較します。
REA を使って興味深いものに取り組んだ方は、ぜひお知らせください。 対象、調べたかったこと、REA がどのように役立ったか、そして分かったことを添えて、 issue または pull request で事例を共有してください。
FAQ
REA を利用できるエージェントはどれですか?
ローカル MCP サーバーに対応しているエージェントであれば、どれでも利用できます。セットアップで 対応エージェントを設定します。それ以外のクライアントは MCP の手動登録で利用できます。
Hopper、Ghidra、または IDA は必要ですか?
ネイティブの詳細な解析には、いずれかが必要です。静的な JavaScript および .NET の調査は、ネイティブ解析エンジンなしで実行できます。セットアップでは、承認後に Hopper をインストールできます。Ghidra と IDA は、既存のインストールを使用します。プロバイダーのセットアップをご覧ください。
最初に Hopper を起動する必要がありますか?
操作で必要になったときに、REA が Hopper を起動します。macOS では、初回起動時にデモモードを選ぶか、ライセンスを有効化するよう求めるダイアログが表示される場合があります。最初の CLI/MCP 操作または無人ジョブを実行する前に、同じユーザーセッションでそのプロンプトに対応してください。必要に応じて、Hopper を手動で開いてください。Hopper の起動とトラブルシューティングをご覧ください。
skills.sh からスキルをインストールすると、何が行われますか?
スキルは、エージェントに調査手順を提供します。npx rea-agents setup
を使って、REA の MCP サーバーを登録し、対応する手順をインストールしてから、エージェントを再起動してください。スキルのみのインストールをご覧ください。
REA はどのようなコードを返しますか?
ネイティブ解析では、擬似コードとアセンブリが返されます。JavaScript/Electron の解析では、モジュールとその関係が復元されます。エージェントはこれらの調査結果を使って実装を作成し、テストします。使用例では、具体的な例をご覧いただけます。
REA はアプリをアップロードしますか?
REA は対象をローカルで解析します。エージェントはツールの結果を受け取り、モデルプロバイダーには独自のデータポリシーがあります。
バグが発生した場合はどうすればよいですか?
まずアップデートしてください。最近のリリースですでに修正されている可能性があります。
npm install --global または bun add --global でインストールした CLI の場合:
rea update
npx でエージェントをセットアップした場合:
npx rea-agents@latest setup
エージェントを使用している場合は、セットアップの更新を完了してから、エージェントを再起動してください。同じタスクをもう一度試してください。問題が解決しない場合は、REA のバージョン、対象の種類、再現手順、エラー出力を添えてイシューを作成してください。
ドキュメント
まず、ウェブサイトの手順付きガイドをご覧ください。 正確なオプション、前提条件、結果の仕様については、以下をご覧ください。
- インストールとセットアップ:エージェントの登録、プロバイダーの設定、更新、アンインストール。
- 準備状況とトラブルシューティング:エージェントまたは解析エンジンの診断。
- CLI と Evidence:コマンド、プロバイダーの選択、スナップショット、インポート/エクスポート、終了ステータス。
- MCP の仕様とエージェントプロンプト:ツールの結果、セッション、ガイド付き調査。
- ツールカタログ:ツール、プロバイダー、CLI コマンドの自動生成インベントリ。
- ロードマップ:予定されている作業と機能の進捗状況。
脆弱性はSECURITY.mdから報告してください。
スターの推移
🎉 GitHub スター数 300,000 件 — ありがとうございます!
REA をご利用いただいている皆様、バグの報告や機能のリクエスト、ビルドのテスト、修正へのご協力をいただいた皆様に感謝します。
免責事項
適切な利用に関するガイダンスについては、DISCLAIMER.md をご覧ください。
違法または無許可の利用に関する本プロジェクトの方針は、すべての REA のバージョン、配布経路、プラットフォームに適用されます。各コピーには、それぞれに適用されるライセンスが引き続き適用されます。
REA は、合法的な研究、教育、相互運用性、ソフトウェアの保存、およびご自身が所有するか、調査を許可されているソフトウェアの分析を目的としています。
貢献
REA へのご協力をお待ちしています!バグの報告や機能の提案はイシューを作成してください。コードやドキュメントの改善はプルリクエストを送信してください。
開発環境のセットアップとチェックについては CONTRIBUTING.md を、検証方法についてはテストを、プロジェクトの構成についてはアーキテクチャマップをご覧ください。
ライセンス
REA が作成したコードは MIT ライセンスの下で提供されます。サードパーティの素材には、それぞれ独自のライセンスと著作権表示が適用されます。依存関係の一覧、保持されているライセンステキスト、外部ツールの規約については、サードパーティの表示をご覧ください。
IDA Pro / Hex-Rays デコンパイラー、Hopper、JEB などの商用ツールは、適用されるライセンスに従って、適法に入手し、使用許可を得る必要があります。REA は、ツールのライセンス、キー、またはアクティベーションの権利を付与しません。トライアル版やデモ版にも、ユーザー、機能、自動化、出力の共有に関する制限を含め、ベンダーの規約が適用されます。クラック版、盗難キー、無許可のキー共有、ライセンス制限の回避は許可されていません。このガイダンスは、MIT ライセンスやサードパーティのライセンスを変更するものではありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
