bbylw/rea-cn

REA:逆向一切 通过一个 MCP 服务,逆向分析二进制文件、应用程序和运行时行为。 看到喜欢的功能,弄清它的工作原理,深入到二进制层面。

REAとは?

REA(Reverse-Engineered Anything)は、Node.jsベースのプラットフォームで、大規模言語モデルのエージェントが従来のリバースエンジニアリングツール(Hopper、Ghidra、IDAなど)や、JavaScript/Electron、.NET、Android、ファームウェア、Webキャプチャなどの静的解析ユーティリティ群と対話できるようにするものです。 アイデアは、AIアシスタントがツールに「この機能はどう動くのか?」と尋ね、具体的な証拠(逆コンパイルされたコード、コールグラフ、文字列、リソース一覧、スクリーンショット)を受け取り、エージェントがそれを推論、説明、さらには再実装できるようにすることです。


仕組み

  1. MCPサービス – REAは、分析コマンドのカタログを公開するローカルのMicro-Component-Protocolサーバーを実行します。
  2. エージェント登録 – npx rea-agents setupを使用して、サポートされているLLM搭載エージェント(Claude、Gemini-CLI、Cursor、Grokなど)にサービスを登録します。セットアップでは、エージェントにクエリの作成方法を指示するスキル(プロンプトガイド)もインストールされます。
  3. 質問する – 「Notionの検索がどのように機能するか説明し、証拠を提供してください」など、自然言語でリクエストを入力します。
  4. ツール実行 – REAは適切なバックエンド(Hopper、Ghidra、JavaScriptパーサー、ブラウザスクレイパーなど)を呼び出し、構造化された証拠(疑似コード、アセンブリ、モジュールグラフ、スクリーンショット、ネットワークログ)を返します。
  5. エージェント応答 – LLMは証拠を消費し、質問に答え、テストできる新しいコードを生成することもできます。

同じワークフローはコマンドラインからも利用できるため、LLMなしで分析をスクリプト化できます。


分析できるもの

対象 返される証拠 必要なツール
ネイティブバイナリ(x86/ARM) 疑似コード、アセンブリ、文字列、シンボル、コール参照 Hopper、Ghidra、IDA
ELFレイアウト セクション、シンボル、再配置、静的保護 Linux上のpwntools
EVMバイトコード ディスパッチセレクター、推論されたパラメータ、状態可変性 Linux上の生のバイト/16進入力
記録されたLinuxクラッシュ レジスタ、シグナル、オプションのメモリマップ pwntools、オプションでGDB
JavaScript / Electronアプリ モジュール、インポート、ソースマップ、IPCブリッジ、ネイティブ拡張 Node.js/npm
Webサイト DOM構造、スクリプト、ネットワークトレース、スクリーンショット Chromeベースのブラウザ
HARキャプチャ リクエスト、レスポンス、ペイロード HARファイル、オプションでmitmdump
.NETアセンブリ メタデータ、CIL、ネイティブ依存関係、ビルド差分 静的解析のみ
Android APK マニフェスト、クラス、逆コンパイルされたメソッド JADX + JDK
Androidデバイス パッケージ、プロセス、ログ、ダンプ、スクリーンショット adb
JEBプロジェクト プロジェクトユニット、アーティファクト概要、疑似コード MCP経由のJEBクライアント
Androidリソース デコードされたマニフェスト、文字列テーブル、ロケール Apktool
ファームウェアイメージ パーティション、抽出されたファイル、binwalkへの引き継ぎ Binwalk/Unblob
パッケージとリソース(Appleバンドル、JSアーティファクト) ファイルリスト、plists、リソース抽出 各種ヘルパー
プロセス動作 ターミナル出力、ファイルシステム変更、ランタイム差分 PTY対応のLinux/macOS

静的JavaScript/.NETチェックはファイルのみを読み取ります。ランタイムキャプチャは、ターゲットをユーザーの権限で実行します。


はじめに(クイックスタート)

# 1. Node 22/24/26とnpmをインストール
npx rea-agents setup          # MCPサービスを登録し、スキルをインストール
# 2. エージェントに質問(選択したLLMクライアント経由)
#    例:「Notesアプリの検索機能を説明し、証拠を示してください。」
# 3. またはCLI分析を直接実行
npx -y rea-agents@latest analyze-javascript-application /path/to/app --json

CLIをグローバルにインストールすることもできます:

npm install -g rea-agents
rea --help

更新はrea update(npm install)またはスキル用のnpx rea-agents@latest setupで行います。


ショーケース例

  • DX-Ball – REAはクラシックなPC-98ゲームのサウンドパンニングルーチンをトレースし、不完全な疑似コードをCに変換し、3,205のオリジナルx86テストケースに合格しました。
  • Notion – Electronクリップボードブリッジをレンダラープロセスからプリロードスクリプトを通してメインプロセスまで追跡し、リッチフォーマットのクリップボードAPIを公開しました。
  • TH04 – 16ビットDOSの弾道トラジェクトリコードを逆コンパイルし、C++ロジックを再構築し、オリジナルのコンパイラ出力と照合しました。

完全なケーススタディはREAウェブサイトにあり、再構築されたリポジトリへのリンクがあります。


誰のためのものか?

  • LLM搭載エージェント – クローズドソースソフトウェアをリバースエンジニアリングする際に、具体的で検証可能な証拠を必要とするもの。
  • セキュリティ研究者 – バイナリ、ファームウェア、またはWebアプリの分析を自動化し、結果をローカルに保持したい人。
  • 開発者 – ソースコードなしで競合他社のアプリの機能を再現したい人。

制限と安全性

  • REAはバイナリをアップロードしません。すべての分析はローカルで実行されます。LLMプロバイダーは、送信した証拠をログに記録する場合があります。
  • 深いネイティブ分析には、ライセンスされた逆アセンブラ(Hopper、Ghidra、IDA)が必要です。静的JavaScript/.NET分析はすぐに機能します。
  • ターゲットをリバースエンジニアリングする法的権利があるかどうかは、ユーザーの責任です。

詳細情報


TL;DR

REAは、LLMエージェントと従来のリバースエンジニアリングツールを橋渡しするNode.jsツールキットで、AIにバイナリ、Electronアプリ、Androidパッケージ、ファームウェア、Webキャプチャなどを調査させ、AIが説明または再実装できる具体的な証拠(疑似コード、グラフ、スクリーンショット)を取得できます。npx rea-agents setupでインストールし、LLMを登録して、質問するかCLIコマンドを直接実行してください。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト