REA と OpenCode: インストールと最初の調査

Written by

in

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 段階の調査プロセスに従います。

<オル>

  • 検査: REA は分析ツールに接続し、ターゲット (バイナリ、アプリケーション、Web サイト) を検査します
  • 分析: コードを追跡し、ルールと動作を決定します
  • リカバリ: エージェントは結果を使用して動作を説明し、実装を構築またはテストします
  • このプロセスにより、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 アーカイブ。

    インストール

    <オル>

  • 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
    

    助けを求める

    典型的な問題

    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/

    Comments

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    DemensDeum
    Privacy Overview

    This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.