REA (Reverse Engineer Anything) は、ソフトウェア アプリケーション、バイナリ、および動作をリアルタイムでリバース エンジニアリングできる MCP サーバーです。このツールはアプリケーションの動作からマシンコードまでのパスをカバーしており、それを管理するエージェントとして OpenCode を使用すると便利です。
OpenCode は、ターミナルに常駐するオープン プログラミング エージェントです。プロジェクト ファイルを読み取り、コードを編集し、コマンドとテストを実行します。そして最も重要なのは、すぐに MCP をサポートしているため、REA は MCP に直接接続します。
REA のユニークな点
REA は、いくつかのプラットフォームと分析タイプを包括的にサポートすることで、リバース エンジニアリングの分野で傑出しています。
- ネイティブ バイナリ: 逆アセンブリおよび逆コンパイル用の Hopper、Ghidra、IDA、または Kuna
- JavaScript アプリケーションと Electron: Electron モジュール、インポート、境界の静的分析
- マネージ コード: .NET アセンブリの分析
- リアルタイム分析: プロセス動作の監視
- ネットワーク トラフィック: HTTP/S リクエストとレスポンスのキャプチャと分析
- モバイル アプリケーション: Android および iOS の APK および IPA ファイルの分析
- 組み込みソフトウェア: 組み込みシステムと IoT デバイスの分析
- モデル ファイル: GGUF およびセーフテンソルのメタデータの抽出
- GPU コード オブジェクト: CUDA および HIP カーネルの分析
- ゲームの保存: ゲーム ロジックと実行可能ファイルの復元
基本的なアーキテクチャと哲学
REA は、開発者がリバース エンジニアリングにアクセスできるようにする 3 段階の調査プロセスに従います。
<オル>
このプロセスにより、AI エージェントは次のような複雑な質問に答えることができます。「Notes アプリでの検索の仕組みを理解して、証拠を示して、私のプロジェクトに同様の機能を作成してください。」
実際の使用例
1.モバイル アプリケーションの分析
REA は Android APK ファイルを分析して回復できます。
- マニフェスト内の宣言と権限;
- クラスのメソッドと依存関係;
- ネイティブ ライブラリへのリンク
- ネットワーク エンドポイントとデータ フロー。
たとえば、Aegis Authenticator の分析では、6 桁の認証コードが 30 秒ごとにどのように変化するかを示し、時間ベースのコード生成 (TOTP) がどのように機能するかを調査しました。
2.デスクトップアプリケーション機能の抽出
Windows 電卓の % ボタンの分析は、REA の機能を示しています。
- コンテキスト (+ または × の後) に応じて異なる動作を定義します。
- アセンブリ命令を解析してロジックを理解する
- 数学的演算を抽出して説明する;
- ルールを復元します: 「+ の後: 最初の数値の 10%」および「× の後: 10% を 0.1 に変換」
3. Web アプリケーション API の復元
REA はブラウザー セッションを記録し、AI エージェントが元のアプリケーションを実行せずにフォルダーの操作などのタスクを実行する RL 環境として再構築できます。
4.ゲームロジックの復元
DX-Ball の事例では、REA が 3,205 のテスト ケースを実行し、元のコンパイル済みコードと一致する C コードをリバース エンジニアリングすることによって、1996 年の Windows ゲームからサウンドスケープ計算を復元した方法を示しました。
技術的能力
ネイティブ分析
- Hopper、Ghidra、IDA、または Kuna と連携してバイナリ ファイルを詳細に分析
- ELF、PE、Mach-O、その他の実行可能ファイル形式をサポート
- 疑似コード、アセンブラ、シンボル、呼び出しを抽出します
- 元のツールを起動せずにオフライン分析を実行
JavaScript 分析
- Node.js と Electron アプリケーションを分析する
- モジュールのインポートと依存関係を追跡する
- ブラウザ接続を介してリアルタイムで動作をキャプチャします
- Извлекает source maps и минифицированный код
セキュリティ
- PE 証明書の静的分析 (Authenticode)
- 防御メカニズムの分析(PIE、NX、RELRO、CFG)
- インポートと DLL のマッピング
- クラッシュ レポートの分析 (Apple IPS)
REA は何を返しますか
REA は、エージェントに理由もなく既成の結論を与えることはありません。各クエリの結果は、結果とその根拠となる証拠です。目的に応じて、応答には次のものが含まれます。
- コードへのリンク – 調査対象の関数が実装されている特定のファイルと行。
- 疑似コードとアセンブラ – ネイティブ バイナリの場合: 逆コンパイルされた関数、命令、呼び出し間の接続
- アプリケーション構造 – JavaScript と Electron の場合: モジュール、インポート、ルート、IPC、ネイティブ アドオンとの接続
- メタデータとファクト – マニフェスト、証明書、署名、フォーマット ヘッダー、その他の静的データ。
- 制限 – 整理できなかった場所。正確には不明な点についてのメモ付き。
エージェントはこのデータを使用して、動作を説明したり、明確な質問に答えたり、その実装を組み立ててテストしたりします。 REA の結果とモデルの単純な推測を区別するのは、証拠と明示的な制限の存在です。
始める前に
OpenCode がすでにインストールされており、モデルがそれに接続されていることが前提となっています。 REA 自体には Node.js 22.23.4+、24.22.1+、または 26.12.1+ が必要なので、バージョンを確認してください。
node -v
ステップ 1: REA を OpenCode に接続する
REA は、MCP サーバーとして OpenCode に登録します。ターミナルで実行します:
npx rea-agents@latest setup
OpenCode を直接指定するには、その識別子 opencode を使用します。
npx rea-agents@latest setup --client opencode
セットアップの内容:
- REA を MCP サーバーとして登録します。
- ワークフロー手順を追加します。
- 既存の設定のバックアップ コピーを作成します。
- 変更を適用する前に確認を求めます。
重要な点:
最初の実験では、オプションの Hopper のインストールをスキップできます。セットアップが完了したら、OpenCode を再起動します。セッションを終了して、opencode を再度実行します。
接続を確認します。
npx -y rea-agents@latest doctor --client opencode --json
成功した結果: "healthy": true。
次にエージェントに次のように尋ねます。
「REA が接続されていることを確認し、使用できる REA ツールを教えてください。」
ステップ 2: 最初の調査
REA は、アプリケーションを起動せずに分析できます。
<オル>
Download https://rea.tools/examples/notes-example.zip
アーカイブを notes-example に解凍します。
フォルダー
「REA を使用して、
/absolute/path/to/notes-exampleにあるアプリを検査します。[メモのエクスポート] をクリックすると何が起こるかを確認します。notes.csv が記述されている場所、そこに含まれるフィールド、および関連するファイルと行を表示します。」
期待される応答:
「ボタンは
notes:exportメッセージを送信します。メイン プロセスはメモを CSV としてフォーマットし、notes.csvをユーザーのダウンロード フォルダーに書き込みます。列はidとtitleです。」
ステップ 3: Ghidra のインストールとネイティブ分析
ネイティブ バイナリ (実行可能ファイルとライブラリ) を分析するために、REA は分析プロバイダーを使用します。最も手頃な無料オプションは NSA の Ghidra です。このツールは、REA が実行されているコンピューターに一度インストールされます。
必要なもの
- Java コンパイラ (
javac) を含む 64 ビット JDK 21 以降。 - リリース ページからの Ghidra アーカイブ。
インストール
<オル>
ghidra_…_PUBLIC_….zip アーカイブを解凍します。 「ソースコード」ではなく、リリースアーカイブを取得してください。ghidraRun または ghidraRun.bat が含まれる解凍されたフォルダーを見つけます。このパスは GHIDRA_INSTALL_DIR 変数に必要です。Java を調べてください。最初のコマンドは java.home を出力します。このパスは JAVA_HOME に必要です。 2 つ目は、コンパイラがインストールされていることを確認します。
java -XshowSettings:properties -version
javac -version
ギドラ接続
Windows (PowerShell):
$env:GHIDRA_INSTALL_DIR = "C:/tools/ghidra_12.1.4_PUBLIC"
$env:JAVA_HOME = "C:/tools/jdk-21"
npx -y rea-agents@latest doctor --provider ghidra --json
npx -y rea-agents@latest setup
macOS / Linux:
export GHIDRA_INSTALL_DIR="/absolute/path/to/ghidra_12.1.4_PUBLIC"
export JAVA_HOME="/absolute/path/to/jdk-21"
npx -y rea-agents@latest doctor --provider ghidra --json
npx -y rea-agents@latest setup
パスを独自のものに置き換えます。コマンドを 1 つのターミナル セッションに保持します。環境変数を設定した後、セットアップを再実行し、構成の更新を確認して、OpenCode を再起動します。
プロバイダー チェックでは成功したレポートが返されるはずです。
npx -y rea-agents@latest doctor --provider ghidra --json
ネイティブ分析の例
エージェントに実行可能ファイルへのフルパスを与え、プロバイダーを指定します。
「構成されたプロバイダーで REA を使用して、
/absolute/path/to/programを調べます。関数と行をリストし、コードへの参照を使用してユーザー入力を処理する部分を説明します。」
または、ターミナルからコマンドを直接実行します。
npx -y rea-agents@latest function "/absolute/path/to/program" main --provider ghidra --json
main を、ターゲット プログラムの関数リストの関数名またはアドレスに置き換えます。結果には、疑似コード、アセンブラ、および呼び出し間の参照が含まれます。
別の種類のソフトウェアの分析
対象のソフトウェア カテゴリを選択してください:
- JavaScript / Electron – Node.js と npm が必要です。 ガイド。
- ウェブサイト – Chrome、Chromium、または Edge ブラウザが必要です。 ガイド。
- Android APK – JADX および JDK 17 以降が必要です。 マニュアル。
- ネイティブ実行可能ファイル – Hopper、Ghidra、または IDA が必要です。 ガイド。
- .NET アセンブリ – Node.js と npm が必要です。 マニュアル。
端末から REA を使用する
JavaScript/Electron アプリケーションの静的解析
npx -y rea-agents@latest analyze-javascript-application "/absolute/path/to/app" --json
パスをアプリケーションまたは .asar ファイルのあるフォルダーに置き換えます。
Electron アプリケーションの .asar ファイルの場所:
- Windows:
C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar - macOS:
/Applications/<App>.app/Contents/Resources/app.asar - Linux:
/opt/<App>/resources/app.asar
rea コマンドのグローバル インストール
npm install --global rea-agents
この後、rea --help コマンドが使用できるようになります。
curl によるインストール (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/morluto/rea/main/install.sh | bash
インストール後、指示に従ってエージェントを構成します。セットアップ メニューが表示されない場合は、rea setup を実行します。
更新と削除
REA アップデート
npx rea-agents@latest setup
グローバル インストールの場合: rea update
REA の削除
npx rea-agents@latest uninstall
助けを求める
- よくある質問: rea.tools/faq/ – アップデート、エージェント、分析に関する簡単な回答
- ガイド: rea.tools/guides/ – バイナリ、Electron、ブラウザ分析の例
- GitHub の問題: github.com/morluto/rea/issues – 問題を報告する
- Discord: discord.gg/GkcryMnJDM – 質問、調査、進行中の作業
典型的な問題
OpenCode は REA を認識しません
セットアップ後に OpenCode を再起動します。 doctor コマンドを使用して接続をテストします。
npx -y rea-agents@latest doctor --client opencode --json
プロバイダーには構成が必要です
ギドラの場合は次のように実行します。
npx -y rea-agents@latest doctor --provider ghidra --json
レポートには、失敗したテストと推奨される次のステップが表示されます。
Windows、WSL、およびスペースを含むパス
- Windows クライアントに PowerShell を使用する
- エージェントが WSL 内で実行されている場合は、その Linux システム内に Node.js と REA をインストールし、Linux パスを使用します
- ターミナルでは、スペースを含むパスを引用符で囲みます
macOS での Hopper のセットアップ
macOS がオートメーションを許可するよう求めた場合は、システム環境設定で REA を実行するアプリを許可します (システム環境設定 → プライバシーとセキュリティ → オートメーション)。その後、再試行してください。
リンク
https://github.com/morluto/rea
https://rea.tools/
https://rea.tools/get-started/
https://rea.tools/guides/
https://opencode.ai/
https://opencode.ai/docs/
https://opencode.ai/docs/mcp-servers/
Leave a Reply