手がかりを見つける
対象を開き、検索や保存に関する文字列・関数名を探します。参照をたどり、関連する処理の擬似コードを取得します。
Reverse Engineer Anything / morluto/rea
REA は、配布されたアプリやバイナリの内部を調べるための CLI と MCP サーバーです。エージェントが文字列、関数、呼び出し関係、実行時の観測を手がかりに機能を説明し、その知見を自分のプロジェクトの実装に使えます。
解析はローカルで行います。ネイティブコードは Hopper・Ghidra・IDA と連携し、JavaScript や Electron の静的解析はそれらを使わずに実行できます。
npm パッケージ: rea-agents · コマンド: rea · MIT ライセンス
| 対象 | 調べる内容 | 経路・前提 |
|---|---|---|
| ネイティブ実行ファイル・ライブラリ | 関数、文字列、参照、逆アセンブル、擬似コード | Hopper / Ghidra / IDA。対応 OS・形式はプロバイダーごとに異なる |
| JavaScript / Electron のディレクトリ・ASAR | モジュールやアプリの構造、依存関係 | Node.js と npm。静的解析ではアプリを実行しない |
| .NET アセンブリ | メタデータ、型、メソッド、IL | マネージドコード解析。NativeAOT はネイティブ解析へ |
| ブラウザ / Electron の実行中アプリ | 画面、ネットワーク、実行時の観測 | 接続可能なデバッグ対象。静的解析とは別の経路 |
| ZIP / APK / IPA / MSIX / DMG | パッケージ内のメンバーと構造 | アーカイブ検査。APK のコード解析には別途 JADX JAR と JDK が必要 |
| ファームウェア | 領域の検査、明示的な抽出 | Linux 上の Binwalk / Unblob を利用者が用意 |
--provider ghidra などで選択します。MCP では open_binary に provider_id を指定します。選択したエンジンの失敗時に別のエンジンへ自動で切り替わることはありません。たとえば「このアプリのオフライン検索はどう動くか」を調べる場合、関係する箇所に絞って解析します。
対象を開き、検索や保存に関する文字列・関数名を探します。参照をたどり、関連する処理の擬似コードを取得します。
呼び出し元・呼び出し先と制御フローを確認します。観測できた内容を根拠にし、未解決の点も示します。
エージェントが調査結果を使い、利用者の技術構成と要件に合わせてコードを書き、テストします。
解析結果には Evidence と、解析範囲の制約や不明点が付属します。見つかった文字列だけで機能全体を断定せず、結論を支える参照と観測範囲を確認します。
| 区分 | 読み方 |
|---|---|
| 観測 | 解析ツールが取得した関数、文字列、参照、実行時データ |
| 推測 | 観測をつないだ説明。根拠となる Evidence を明示する |
| 未解決 | 解析できない経路や不足した観測。未確認の挙動を成功扱いにしない |
Evidence は CLI でインポート・エクスポート・比較できます。保存した解析スナップショットは、対象のバイト列・操作・パラメーター・ツール・設定が一致する場合に結果を再利用します。
Node.js 22.19 以上の 22 系、24.11 以上の 24 系、または 26 以上と npm が必要です。以下の ./app.asar は解析したいローカルファイルのパスに置き換えてください。
npx -y rea-agents@latest analyze-javascript-application ./app.asar --jsonMCP 設定やネイティブ解析エンジンのインストールは不要です。結果には Evidence、復元されたグラフ、制約、不明点が含まれます。
npx rea-agents setupCodex、Claude Code、Cursor、Gemini CLI などに対応します。setup は通常、パッケージと版が一致する調査スキルも導入します。
# Codex の MCP 登録を診断
npx -y rea-agents@latest doctor --client codex --json
# Ghidra の前提条件を診断
npx -y rea-agents@latest doctor --provider ghidra --json無指定の doctor は全体監査です。使わないエンジンが未設定でも異常を報告し得るため、現在の作業に必要な範囲を指定します。