プログラミング
エージェントを使って、アプリの動作からネイティブバイナリまであらゆるものをリバースエンジニアリングする
Reverse engineer anything with agents, from app behavior down to native binaries (github.com)
要約
REA(Reverse Engineer Anything)は、バイナリ、アプリケーション、ランタイム動作全体にわたるリバースエンジニアリングのための統合プラットフォームです。エージェントと連携し、ソースコードなしでアプリの機能を調査し、その仕組みをバイナリレベルまで理解することを可能にします。ネイティブバイナリ、JavaScript/Electronアプリ、.NETアセンブリ、ウェブサイトなどを分析でき、結果には証拠と限界が含まれます。ローカルで分析が実行され、プライバシーが保護されます。
全文翻訳
English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Türkçe · Русский · Tiếng Việt · ไทย · Deutsch · Español · Français · Українська · Polski · Português (Brasil) · العربية · فارسی · Bahasa Indonesia · Italiano
REA: Reverse Engineer Anything
バイナリ、アプリケーション、ランタイム動作全体にわたる1つのMCP(Meta-Cognitive Process)。
気に入った機能を見つけたら、それがどのように機能するか、バイナリレベルまで理解してください。
ウェブサイト · ガイド · ショーケース
クイックスタート · REAの仕組み · 分析できるもの · ショーケース · FAQ · ドキュメント
npx rea-agents setup
リバースエンジニアリングコミュニティDiscordに参加 · Q&A · ショーアンドテル
アプリで気に入った機能があり、自分の製品にも取り入れたいですか?エージェントに調査を依頼してください。REAを使えば、ソースコードなしでアプリを検査し、機能の仕組みを説明させ、証拠を示し、あなたのプロジェクト用にバージョンを構築させることができます。
REAは、エージェントをネイティブバイナリ、JavaScriptおよびElectronアプリ、.NETアセンブリ、ウェブサイトの検査ツールに接続します。これらのツールは、ターミナルから直接使用することもできます。分析はローカルで実行され、結果には各結論の証拠と限界が含まれます。
セットアップは、REAをエージェントに登録し、対応するワークフロー指示をインストールします。ネイティブ分析には、既存のHopper、Ghidra、またはIDAのインストールを使用できます。セットアップでは、承認を得てHopperをオプションでインストールすることもできます。静的JavaScript分析には、ネイティブ分析エンジンは必要ありません。
セットアップ手順、図解付きガイド、実際のケーススタディについては、REAのウェブサイトをご覧ください。
クイックスタート
エージェントをセットアップする
Node.jsとnpmがインストールされている場合、以下を実行します。
npx rea-agents setup
エージェントを選択し、提案された変更を確認して承認してください。セットアップは、REAのMCPサーバーと対応するワークフロー指示を追加し、既存の設定のバックアップを作成します。その後、エージェントを再起動してください。
セットアップは、Claude Code、Codex、Cursor、Gemini CLI、Grok Buildなどのエージェントをサポートしています。プロバイダーの設定と手動MCP登録については、インストールとセットアップをご覧ください。
エージェントに質問する
Notesアプリの検索機能がどのように機能するかを説明し、証拠を示し、私のプロジェクト用に同様の機能を作成してください。
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および証拠ガイドをご覧ください。
REAを更新する
REAは迅速に変更され、新しいリリースには頻繁なバグ修正が含まれます。インストールを最新の状態に保ってください。
npm install --globalまたはbun add --globalでインストールしたCLIの場合:
rea update
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インストール不要
WASMアーティファクト | 検証、セクション、正確なインポート/エクスポートWATフォーム、デコードされたWAT | WABT 1.0.42(呼び出し元提供);inspect_wasm_artifact
EVMバイトコード | ディスパッチセレクタ、バイトオフセット、推測された引数、ミュータビリティ | Linux x64上のローカル生/16進数キャリア;オフラインEVMガイド
記録されたLinuxクラッシュ | 生のノート、記録された各スレッドのレジスタ/シグナル、オプションのマッピング候補 | Linux x64上のpwntools(呼び出し元提供);オプションのGDB/pwndbg;記録されたクラッシュ
JavaScript / Electron | モジュール、インポート、ソースマップ、ルート、IPC、ネイティブアドオンの関係 | Node.jsとnpm;アプリケーション分析
ウェブサイト | ページ構造、スクリプト、ネットワーク観測、要求されたスクリーンショット | Chromeファミリーブラウザ;ブラウザ分析
保存されたネットワークキャプチャ | 要求、応答、公開されたペイロード、ソースの場所 | HAR;Linux上のmitmdump(ネイティブmitmproxyキャプチャ用);キャプチャガイド
.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;ファームウェアガイド
パッケージとリソース | ファイルインベントリ、ダイジェスト、plist、Appleバンドルの構造、抽出されたリソース | アーティファクトとJavaScriptガイド、Appleアプリケーション
アプリケーションの動作 | ターミナル出力、インタラクション、終了およびファイルシステム観測、実行比較 | Linux/macOS(ネイティブPTY付き);プロセスキャプチャ
静的JavaScriptおよび.NET検査は、アプリケーションを実行せずに提供されたファイルを読み取ります。ランタイムキャプチャは、ユーザー権限を使用してターゲットを実行または操作します。各ランタイムガイドは、その影響を説明します。ネイティブフォーマットとホストサポートはプロバイダーによって異なります。HopperおよびGhidraのセットアップ、IDAガイド、および実験的な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を見つけ、それをプリロードとIPCを介してメインプロセスに追跡し、リッチクリップボード形式を検査します。
ケーススタディを読む
TH04: DOS弾丸リング計算を復元する
元のPC-98ゲームの16ビット命令を検査し、固定および照準角度の計算を復元し、再構築されたC++を歴史的なコンパイラ出力と比較します。
ケーススタディを読む · 再構築リポジトリ
REAで何か興味深いものを使用した場合は、ぜひお見せしたいです。ターゲット、質問、REAがどのように役立ったか、そして