42万スターの「何でも逆解析」REAは本物か:実機で主張と限界を確かめる

REA の実機検証のまとめ。自作 JS の IPC 5/5、Ghidra 連携は動作、実アプリの全体解析は449.5秒で失敗 レビュー・比較

この記事について(広告・アフィリエイトリンクはありません)

REA 本体は無料で入手できます。使うAIエージェントの利用料は別にかかります。今回の検証では、有料のツールは使っていません。

結論:小さなアプリと自作EXEでは期待どおり。大きな実アプリでは範囲を自分で絞る必要がある

REA(Reverse Engineer Anything)は、Claude Code などのAIエージェントに、逆解析(リバースエンジニアリング)用のツールをまとめて渡すローカルのMCPサーバーです。MCP は、エージェントに外部のツールをつなぐ共通の仕組みです。Windows 11 の実機で、導入から解析まで試しました。

  • 導入は3.7秒で終わりました。 設定の変更は Claude Code の設定ファイルへの登録とスキルの追加だけで、元の設定のバックアップも自動で作られました。
  • 自作の小さなアプリと EXE では、エージェントの説明が正解と一致しました。 無料の Ghidra と組み合わせると、シンボル(関数名)のない Rust の EXE でも、3つの関数の動作をアドレスつきで説明できました。プログラムの出力の予測も、実際の実行結果と完全に一致しました。
  • 大きな実アプリ(公開OSSの Mark Text)では、そのままでは解析が終わりませんでした。 既定の全体解析は449.5秒で上限に達して止まり、解析対象を main と preload に絞ると75.3秒で通りました。最終的に説明は公開ソースと一致しましたが、決め手になったのは、抽出したコードをエージェントが直接読んだことでした。

費用の面では、1回の質問で約16万〜20万トークンを使いました。従量課金のAPIで使う場合は、費用に注意が必要です。

GitHub のスター数が大きいことは話題性の目安にはなりますが、中身の評価とは別です。スターの増え方については、末尾の検証メモにまとめました。

REAでできること

公式 README によると、REA は次のようなものを解析できます。今回実際に試したのは、太字にした項目です。

対象何がわかるか必要なもの
JavaScript / Electron アプリモジュール、IPC(画面側と本体側の通信)、preload の公開API追加なし
ネイティブの EXE / DLL疑似コード、アセンブリ、文字列、関数Ghidra(無料)か、IDA Pro・Hopper(商用)
Go のバイナリGo のバージョン、モジュール、依存、ビルド設定追加なし
Rust のバイナリcargo-auditable の依存一覧(埋め込まれている場合)追加なし
Windows の PEインポートするDLL、署名テーブル追加なし
.NET アセンブリメタデータ、CIL追加なし
Android APKマニフェスト、クラス、メソッドJADX と JDK
Webサイトページ構造、スクリプト、通信Chrome系ブラウザ
GGUF / safetensorsヘッダーとテンソル情報追加なし

使い方は2つあります。1つはエージェントに日本語で頼む方法で、たとえば「このアプリの保存機能がどう動いているか、根拠つきで説明して」のように聞きます。もう1つは、ターミナルで rea コマンドを直接使う方法です。

解析はローカルで行われます。ただしエージェントには解析結果が渡るので、その内容はエージェント(モデル提供者)のデータの扱いに従います(README の FAQ より)。

解析してよいのは、自分が権利を持つソフトか、解析の許可を得たソフトだけです。

今回解析したのも、自作のテスト用プログラムと、MITライセンスで公開されているOSSだけです。詳しくは末尾の「権利とライセンス」をご覧ください。

検証環境

項目内容
OSWindows 11 Home(10.0.26300)
CPU / RAMRyzen 9 9950X3D / 128GB(RTX 5090 も載っていますが、今回は使っていません)
Node.jsv24.22.2(検証用に別フォルダへ用意)
エージェントClaude Code 2.1.309(公式)
REArea-agents 6.8.0(npm、2026-10-25 リリース)
Ghidra / JDKGhidra 12.1.4 / Eclipse Temurin JDK 21.0.13
検証日2026-11-03

今回の検証では GPU を使っていません。RTX 5090 以外の人でも、GPU の性能を気にする必要はありません。ただし、解析時間は16コアの CPU での値です。

rea-agents の導入手順

手順1:Node.js のバージョンを確認する

REA には Node.js の 22.23.4 以上(22系)、24.22.1 以上(24系)、または 26.12.1 以上 が必要です。

node -v

検証PCの Node は 24.14.1 で、条件を満たしていませんでした。そこで、普段使いの Node はそのままにして、nodejs.org の zip 版(v24.22.2、約38MB)を別のフォルダに展開し、作業するターミナルでだけ PATH を通しました。

$env:Path = "L:\kobo_tools\node-v24.22.2;" + $env:Path
node -v   # v24.22.2

手順2:入手元を確認する

README の冒頭には、公式の入手元は次の3つだと書かれています。

README は、名前の似たリポジトリや、コピーされた README は公式の証明にならないと警告しています。上の3つ以外からは入れないでください。

手順3:変更内容を先に確認する(dry-run)

いきなり書き込まずに、まず「何が変わるか」だけを表示させます。プロジェクトのフォルダとは別の、作業用のフォルダで実行してください。

npx rea-agents@6.8.0 setup --client claude_code --dry-run --json

初回はパッケージを取得するので時間がかかります(検証では、最初のコマンド全体で16.4秒、npm のキャッシュが約295MB増えました)。途中で prebuild-install@7.1.3 が非推奨だという警告が出ますが、公式のインストール文書によれば、REA には影響しません。

--client を付けずに dry-run すると、PCにあるエージェントの点検だけが行われ、変更のプランは0件でした。検証PCでは、Claude Code、Claude Desktop、Codex、OpenCode、GitHub Copilot CLI、VS Code、Grok Build、Hermes、DeepSeek Harness、Grok Bot の10種が見つかりました。--client で指定すれば、計画に入るのはそのエージェントだけです。指定しない場合は対話画面で選びます(公式文書より。この画面は今回試していません)。

手順4:設定をバックアップしてから setup する

REA も自動でバックアップを作りますが、念のため自分でもコピーしておきます。

Copy-Item $HOME\.claude.json $HOME\claude.json.before-rea
npx rea-agents@6.8.0 setup --client claude_code

今回は端末のない環境だったので --yes --json を足して実行し、3.7秒で終わりました。変わったのは次の2つだけです。

  • ~/.claude.json の mcpServers に rea を追加(中身は cmd.exe /d /c npx -y rea-agents@6.8.0 mcp)
  • ~/.claude/skills/reverse-engineer-anything にスキルを追加(8ファイル、約138KB)
REA の setup の dry-run と実行の結果。変更は claude.json とスキルの2件で、status は ready
setup の dry-run と実行の結果(検証ログの JSON から必要な項目を抜き出して整形。ホームフォルダーは ~ に置き換え)

REA が作ったバックアップ ~/.claude.json.rea.backup は、元のファイルとハッシュが一致しました。

設定が終わったら Claude Code を再起動します。claude mcp list で rea が Connected になっていれば準備完了です。

注意:この登録は Claude Code のすべてのプロジェクトで有効になります。

REA が提供するツールは229個あり、ツール一覧の応答だけで約3.5MBありました。特定のプロジェクトだけで使いたい場合は、公式文書の「Limit REA to one project or agent profile」にある、CLAUDE_CONFIG_DIR で別のプロファイルを作る方法が向いています。

検証でも途中で、この登録を外しました。ほかの作業のセッションにまで229個のツールを読み込ませないためです。

手順5:ネイティブ解析を使うなら Ghidra を入れる(無料)

EXE や DLL の中身(疑似コード)を見るには、解析エンジンが必要です。今回は無料の Ghidra を使いました。

ダウンロードサイズ入手元
Ghidra 12.1.4約570MBNationalSecurityAgency/ghidra
Temurin JDK 21約205MBAdoptium(temurin21-binaries)

最新の Ghidra は 12.2 ですが、REA が動作確認している 12.1.4 を使いました。展開したら、環境変数を3つ設定します。パスは検証PCの例なので、実際のフォルダに合わせて直してください。

$env:GHIDRA_INSTALL_DIR = "L:\kobo_tools\ghidra-12.1.4\ghidra_12.1.4_PUBLIC"
$env:JAVA_HOME = "L:\kobo_tools\jdk-21.0.13\jdk-21.0.13+9"
$env:REA_ANALYSIS_PROVIDER = "ghidra"
npx rea-agents@6.8.0 doctor --provider ghidra --json

healthy: true と出れば準備完了です(1.9秒)。Windows での Ghidra 連携は、公式ドキュメントでは「experimental(試験的)」の扱いですが、今回の範囲では問題なく動きました。

rea doctor の結果。healthy は true で、Ghidra 12.1.4 と JDK 21.0.13 を確認
doctor --provider ghidra の結果(検証ログの JSON から必要な項目を抜き出して整形)

試したこと1:自作の Electron 風アプリ(正解つき)

答え合わせができるように、IPC(画面側と本体側の通信)で動く機能を5つ持つ小さなアプリを作りました。どの機能がどのファイルのどの関数にあるかを、先に正解表として書いておきました。

npx rea-agents@6.8.0 analyze-javascript-application "L:\...\targets\js-app" --json
結果内容
時間2.5秒
見つかったものIPC チャンネル 5/5、main 側の受け口 5/5、preload の公開API 5/5、ウィンドウの設定(contextIsolation: true)、1500ms のタイマー、上限値 20
出なかったもの文字列の値(保存先のフォルダ名、拡張子、URL の制限など)、HTML をエスケープしていない不備の指摘
出力サイズ約1MB(ソースは約4KB)

構造(どこからどこへ通信しているか)は正確でした。一方で「何という文字列を使っているか」はほとんど出力に残らないので、細部はエージェントがソースを読んで補う形になります。

チャンネル名をループで組み立てる版(kobo:${k} のような書き方)も試しました。こちらは「動的なチャンネル 3件、対応付け 0件」と出て、推測で埋めることはしませんでした。REA の出力の注記どおりの動作です。

試したこと2:自作の Go / Rust の EXE を Ghidra で読む

関数を3つずつ持つ小さな EXE を Go と Rust で作り、REA と Ghidra に読ませました。Rust はシンボル(関数名)を残していない状態です。

操作時間結果
Go のビルド情報(inspect-go-binary)1.5秒Go 1.26.4、モジュール名、依存なし。正解と一致
Rust のビルド情報(inspect-rust-binary)1.6秒依存一覧が埋め込まれていないことを正しく報告。rustc のコミットも検出
Go の関数一覧(Ghidra)34.1秒1,765関数
Go のチェックサム関数を逆コンパイル38.7秒値 * 0x1f + バイト(31倍して足す)。正解どおり
Rust で kobo を名前検索27.7秒0件(シンボルがないので当然)
REA 経由で Ghidra が返した main.koboChecksum の擬似コードとアセンブリ。sVar2 * 0x1f の部分を強調
main.koboChecksum の逆コンパイル結果(検証ログから抜粋して整形)

ターミナルから使う場合は、呼び出すたびに Ghidra を読み込み直すので、上の表の操作は1回あたり30〜40秒かかりました。公式ドキュメントには「最初の関数の問い合わせに約434秒」という例が載っていますが、これは性能を絞った環境での値です。今回の環境では1分未満でした。

試したこと3:エージェントに説明させる

本番の使い方である「エージェントに聞く」形も試しました。正解表とソースは読ませない条件で、REA のツールだけを使って「この機能はどう動いているか、根拠つきで説明して」と頼みました。

対象時間トークン正解との一致
自作 JS アプリ249秒約16.8万流れ、行番号、5チャンネルとも一致。わからない文字列は「不明」と回答
Go の EXE(シンボルあり)194秒約16.5万3関数の動作が一致。出力の予測が実行結果と完全一致
Rust の EXE(シンボルなし)209秒約17.5万3関数をアドレスで特定。出力の予測が実行結果と完全一致
自作 JS(動的チャンネル版)547秒約17.9万5チャンネルを推定できたが、大半は推論

シンボルのない Rust の EXE でも、結果は同じでした。エージェントは REA の逆コンパイル結果から、ハッシュ計算、0x5A との XOR、コラッツ数列の3つを特定しています。プログラムの出力(3297457 [49, 53, 56, 53] 18)も、実行する前に言い当てました。

どの回答にも根拠(Evidence ID と、ファイル・行またはアドレス)が付いていて、確認した範囲では根拠のない断定はありませんでした。

すんなり進んだわけではなく、ツールの呼び出し計156回のうち、17回はエラー応答でした。

この試験は、Claude Code のコマンド版(claude -p)ではなく、REA の MCP サーバーにエージェントを中継でつないで行いました。理由と影響は末尾の検証メモに書いています。

試したこと4:実在のOSS「Mark Text」で保存機能を調べる

最後に、MITライセンスの Markdown エディタ Mark Text 0.23.0(Windows 版、app.asar 178MB、20,141ファイル)で「ファイル保存の流れ」を調べました。ソースが公開されているので、REA の説明が正しいかを答え合わせできます。

操作時間結果
アプリの種類の判定1.7秒Electron と判定
JS 全体の解析(既定の設定)449.5秒で失敗依存ライブラリ内の1ファイルで、1ファイルあたり300秒の上限に到達。出力は476MB
main と preload に絞って解析75.3秒成功。結果のファイルは311MB
エージェントへの質問「保存の流れ」894秒約19.8万トークン。照合した範囲で公開ソースと一致

全体解析は、18,452ファイル中の797番目で止まりました。依存ライブラリの中の1ファイルが上限に達したためで、エラーには原因と対処(--analysis-timeout-ms と --source-path)が書かれていました。実アプリでは、最初から --source-path で調べたい部分に絞るのが現実的です。

npx rea-agents@6.8.0 analyze-javascript-application "C:\path\to\app.asar" --source-path out/main/index.js --source-path out/preload/index.js --detail summary --evidence_output evidence.json --json

一致したのは、保存ダイアログの分岐、キャンセルしたときの中断、.md の補完、改行の変換と文字コードの変換、書き込みに失敗したときの再試行(エラーの種類と待ち時間まで)です。

一方で、REA の解析結果だけでは届かない部分もありました。

  • 絞った解析では、main 側の IPC の受け口が 0件 と出ました。実際のコードには少なくとも118か所あります。原因は特定できませんでした(同じ書き方の小さなコードでは検出できました)。
  • 呼び出し元をたどる機能は0件、機能名での追跡は一致なしでした。REA 自身は「見つからないことは存在しないことの証拠ではない」と注記しています。
  • 正しい説明にたどり着けたのは、REA が抽出したコードを、エージェントがテキストとして直接読んだからです。

抽出そのものにも285秒かかりました。約10.5MB の応答は MCP の上限(10MiB)を超えてエラーになりましたが、抽出自体は完了しています。

主張と実測の比較

README の主張実測
setup はバックアップを作り、関係ない設定は変えない確認できた(変更は mcpServers とスキルだけ。バックアップは元と一致)
静的な JS 解析に解析エンジンは不要そのとおり。小さなアプリでは2.5秒
Ghidra でネイティブ解析ができる(Windows は experimental)Go / Rust の自作 EXE で動いた
根拠と限界を添えて結果を返すそのとおり。わからない部分は「未解決」「不明」と出た
機能の仕組みを理解して、自分のプロジェクトに作れる小さな対象では理解まではできた(実装の生成は今回は試していない)。大きなアプリでは、範囲の絞り込みと、エージェントがコードを直接読むことが必要だった

向いている人・向いていない人

向いている人

  • 自作アプリや OSS の配布物の中身を、根拠つきで調べたい人
  • Ghidra を自分で操作せずに、エージェント経由で EXE の関数を読みたい人
  • Go / Rust / PE の情報(依存、インポート、署名)をまとめて確認したい人

向いていない人

  • 大きなアプリを丸ごと1回で解析したい人(範囲を絞る作業が必要です)
  • 従量課金の API でエージェントを使っていて、費用を抑えたい人(1回の質問で16万〜20万トークン程度)
  • 権利のないアプリを解析したい人(REA の注意書きも、権限を得るのは利用者の責任だとしています)

元に戻す方法

Claude Code だけから外す場合は、次の2つを行います。

claude mcp remove --scope user rea
Remove-Item -Recurse $HOME\.claude\skills\reverse-engineer-anything

検証後に元へ戻したところ、~/.claude.json に残った差は、空の mcpServers: {} と Claude Code 自身が更新する項目だけでした。公式文書によると、rea uninstall はほかのエージェントにも適用されます(今回は試していません)。

設定とは別に、解析で残るファイルも見てください。Mark Text の抽出フォルダ(約181MB)は、一時フォルダに残ったままでした。

よくある質問(FAQ)

Q. REA は無料ですか?

REA 本体は MIT ライセンスで、無料です。ネイティブ解析エンジンは、Ghidra なら無料で、IDA Pro や Hopper は商用ライセンスの製品です。

Q. REA に GPU は必要ですか?

今回の検証では GPU を使わずに、導入から解析まで終えました。

Q. 解析したアプリはどこかに送られますか?

README によれば、REA 自体はローカルで解析します。ただし結果はエージェントに渡るので、エージェント(モデル提供者)のデータの扱いが適用されます。

Q. 市販アプリを解析してもいいですか?

REA の注意書き(DISCLAIMER.md)は、自分が所有している、または許可を得たソフトの解析を前提にしています。DRM やライセンスチェックの回避、チートなどは、プロジェクトとして支援しないと明記しています。ソフトの利用規約や、お住まいの国の法律も確認してください。

Q. Windows でも Ghidra 連携は使えますか?

公式には experimental(試験的)の扱いです。今回は Ghidra 12.1.4 と JDK 21 の組み合わせで、自作の Go / Rust の EXE を解析できました。

検証メモ(留保と注意)

権利とライセンス

対象ライセンス・条件今回
REA 本体MIT(Copyright (c) 2026 morluto)。同梱の第三者物は各自のライセンス(例:Windows のネイティブアドオンは MinGW-w64 のランタイム告知、任意依存の Frida は LGPL-2.0 系)使用
Ghidra 12.1.4Apache-2.0(NOTICE の条件あり)。REA は Ghidra を同梱しないので、各自で入手使用
Temurin JDK 21GPLv2(同梱の legal で確認。Classpath Exception の条文は未確認)使用
IDA Pro / Hex-Rays、Hopper、JEB各社の商用ライセンス。REA はキーやライセンスを一切付与しない。公式の注記によると、JEB の EULA は逆コンパイル結果の公開を制限している未使用
解析対象自作のテストプログラムと、Mark Text(MIT)―

REA の DISCLAIMER.md は「ソフトが公開されていることや、ファイルを持っていることだけでは、すべての操作の許可にはならない」「解析結果を得ても、元のプログラムの権利は得られない」という趣旨を明記しています。

安全面の注意

  • npx は npm から取得したコードを自分の権限で実行します。README も、対象のプロジェクトの外で取得するよう勧めています。
  • 公式ドキュメントによると、Windows の Ghidra 連携はあなたの権限で動き、サンドボックスではありません。悪意のある対象や機密の対象も対応外としています。

スター数は評価に使っていない(話題性と中身は分ける)

  • 取得時点のスター数は 423,460、フォーク数は 105,575 でした(GitHub API、2026-11-03)。README の末尾にも「400,000 GitHub stars」とあります。
  • 二次情報の時系列では、10月9日に約3.4万、10月15日に25.2万超と、短期間で急増しています。自然な伸びかどうかは確認できていません。不正と断定する材料も持っていません。この記事では、スター数を人気や品質の証拠としては扱っていません。
  • 上の評価は、スター数とは関係なく、今回の実測だけにもとづいています。

検証方法の限界

エージェントの試験は claude -p ではありません。 検証PCのコマンド版 Claude Code がログインしていなかったため、REA の実際の MCP サーバーを起動し、中継のスクリプトを通してエージェントから呼びました。そのため、Claude Code の MCP 統合そのものと、スキルの自動読み込みは試せていません。回答の形式(「直接わかったこと/推論/わからないこと」の区別)も、こちらから指定しています。

テスト担当のモデルは Claude Opus 5.5(Claude Code のサブエージェント)です。ソースと正解表を読まない条件は指示で伝えたもので、OS の権限で禁じたわけではありません。Mark Text では、REA で抽出した配布物を読むことを許可しました。

どの計測も1回ずつです。 Go の関数の一部(134.2秒、82.7秒)は、別の解析と同時に実行したので遅かった可能性があり、上の表には載せていません。

エラーの例: recover_javascript_sources は Wakaru が未設定で Linux x64 専用のため、Windows では使えませんでした。trace_* は、圧縮された入力スキーマから seed の形がわからず、推測で失敗した呼び出しが複数あります。

未計測: 対話式の setup 画面、rea uninstall、条件未満の Node での解析の完走、Mark Text の上限を上げた全体解析、.NET と APK、実行時の観測系の機能、同じ質問を繰り返したときの精度。

Mark Text でエージェントが述べた「名前を付けて保存で拡張子を省くと、通知されるパスと実際のファイル名がずれる可能性」は未検証です。不具合とは判断していません。README の事例(DX-Ball、Notion、TH04)は開発側の記録で、今回は再現していません。

検証PC固有のこと

  • PATH 上の claude が別のラッパーだったため、REA の登録(~/.claude.json)が見えませんでした。公式の Claude Code からは問題なく接続できました。REA の不具合ではありません。
  • 条件未満の Node 24.14.1 でも、MCP の接続とツール一覧の取得はできました。解析を完走させてはいないので、動く保証にはなりません。
  • 最初の setup と解析コマンドは、Claude Code の権限チェック(auto mode)に「外部から取得したコードの実行」として止められました。運営者の指示を確認してから実行すると通りました。

この記事の検証環境

Windows 11 Home / rea-agents 6.8.0 / Ghidra 12.1.4 / 2026-11-03(GPU 不使用)
これまでの検証の一覧はこちら

参考にした公式資料

関連記事

この記事を書いた人
こまたろ

画像生成 AI に興味を持ったのがきっかけで、3年ほど前から ComfyUI を触っています。始めたころは今ほど情報がそろっておらず、何時間もかけて整えた環境が翌日のアップデートで動かなくなったこともありました。

KOBO Lab は、自分の学び直しと、これから ComfyUI を始める人が同じところでつまずかないようにと思って始めたサイトです。初心者も中級者も、迷ったときに開くサイトを目指しています。

検証は、RTX 5090 を積んだ自作 PC 1台で、実際に動かして確かめています。作業を楽にするための自作ツールも作っています。

記事は、運営者自身の経験と検証をもとに、Claudeで下書きを作り、GrokボットとMuseでも添削や確認をして仕上げています。

KOBO Lab の新しい記事を受け取る
レビュー・比較
KOBO Lab の新しい記事を受け取る
タイトルとURLをコピーしました