AIエージェントはあなたのアプリをリバースエンジニアリングできるのか?

REA——Reverse Engineer Anything——は、コーディングエージェントがプロフェッショナルなリバースエンジニアリング・ソフトウェアを操作できるオープンソースのMCPサーバーおよびコマンドラインツールです。エージェントを出荷済みのアプリやバイナリに向けると、本物の逆コンパイラでコードを検査し、ある機能の仕組みを仕様として書き出し、その機能を再構築し、再構築結果を元のものと照合します。2026年10月にGitHubで最も急成長したプロジェクトの一つとなり、古い事実の経済学を変えました。ユーザーのマシン上で動くものはすべて、そのユーザーに読まれ得るのです。本記事では、REAが実際に何であるか、それが駆動するツールのスタック、その出力を信頼できるものにするワークフロー、そしてソフトウェアを出荷する開発者がそれに対して何をすべきかを説明します。

REAとは何か

REA(リポジトリは morluto/rea、MITライセンス、npmから rea-agents としてインストール)は逆コンパイラではありません。自ら何も逆コンパイルしません。これはModel Context Protocolを話すオーケストレーション層であり——このサイトの エージェント対応の取り組みがウェブサイト側から扱うのと同じインターフェースです——リバースエンジニアリング操作を、Claude Code、Codex、Cursorなどのコーディングエージェントが呼び出せるツールとして公開します。このバイナリを逆アセンブルせよ、この関数を逆コンパイルせよ、文字列を一覧せよ、相互参照をたどれ、証拠を示せ。重い作業を行うのはその下にあるエンジンであり、エージェントは人間のアナリストと同じようにそれらを駆動しますが、徹底的にやり尽くす余裕がある点が異なります。

この分業こそが要点です。逆コンパイラの出力は膨大で、ほとんどが退屈です。リバースエンジニアリングで希少なスキルは、ツールを実行することではなく、次に何を見るべきかを判断し、答えが証明されたときを知ることでした。REAはエンジンにワークフローの指示を組み合わせます——決められた順序で調査し、すべての主張に証拠を記録し、解決できなかったことを明示する——ため、エージェントの出力は擬似コードの山ではなく、裏付けのある発見の集合になります。ネイティブバイナリにはGhidra、IDA Pro、Hopperを、AndroidパッケージにはJADXを駆動し、ライブな振る舞いについてはHARやmitmproxyのキャプチャを読むことができます。一つのインターフェース、多数のエンジン、そしてエージェントが持久力を提供します。

スタックを一枚の地図で

解析の中核。 Ghidra はNSAの無料のApache-2.0ライセンスの逆コンパイラで、ほとんどの人にとってのデフォルトエンジンです。IDA Proは多くのプロフェッショナルが今も好む商用の現行製品です。新しいのはどちらのツールでもなく、その橋渡しです。GhidraMCP と ida-pro-mcp は、実行中のGhidraやIDAのセッションをMCP経由でエージェントに公開し、エージェントがスクリーンショットを読む代わりに逆アセンブル・データベースを直接照会できるようにします。REAはその一段上に位置し、エンジンを選び、作業の順序を組み立てます。

モバイルとアプリ。 jadx はAndroidのAPKを読みやすいJavaへ逆コンパイルし、Apktool はAPKのリソースとsmaliを展開して再構築でき、Frida は実行中のアプリに計装を施し、関数が実行される際にフックします——静的逆コンパイルには見えない動的な半分です。そしてILSpyは.NETアセンブリに対してjadxがAPKに対して行うことを行います。(コードではなくAPKの宣言をインストールなしで最初に眺めるには、このサイトの APK Analyzer がブラウザでマニフェスト、権限、署名証明書を読みます。)

バイナリと低レベル。 radare2 とその扱いやすいフォーク rizin はスクリプト可能でターミナル第一のリバースエンジニアリング・フレームワークであり、x64dbg は多くのアナリストが手にするWindowsデバッガであり、ImHexはファイル形式を記述するパターン言語を備えた16進エディタであり、angrは一回の実行ではなく関数を通るすべての経路について推論できる記号実行エンジンです。これらは逆コンパイラが苦手な問いに答えるためのツールです。パックされたバイナリ、奇妙なファイル形式、「この入力はそもそもあの分岐に到達できるのか」。

ネットワークとランタイム。 mitmproxy はアプリとそのサーバーの間に座り、会話を記録します——多くのアプリではAPIトラフィックがコード以上に多くを説明し、これはREAがネイティブに読むキャプチャ形式です。dnSpyは.NETアプリケーションをライブでデバッグおよび編集し、raddebuggerはEpicのWindows向け最新グラフィカルデバッガです。その全体を囲むのが地図です。二つの厳選リスト、awesome-ai-reverse-engineering(エージェント時代のリポジトリ122件、一つ一つ読んでスコア付け)とREA作者自身の awesome-reverse-engineering が、下の出典にリンクされています。

クリーンルーム・ループ:仕様、再構築、検証

REAが奨励するワークフローはAIより古いものです。それはクリーンルーム・エンジニアリングであり、かつてBIOSをコピーせずにクローンするために使われた規律です。エージェントは対象を調査し、SPEC.md——ソフトウェアが何をするかを平易な言葉で記した仕様で、各振る舞いの証拠が添えられたもの——を書きます。その後に初めて、逆コンパイル済みコードからではなく仕様から再構築が始まり、再構築は受け入れ基準によって判定されます。同じ入力、同じ出力、同じエッジケース。判定者がノーと言ったところでは、ループは当て推量ではなく証拠に戻り、再び調査します。

だからこそ興味深い成果物は擬似コードではなく仕様なのです。証拠を伴う仕様は、第二のエージェント、テストスイート、あるいは人間によってチェックできます。生の逆コンパイルはそのどれでもありません。これは法的にも意味のあるステップでもあります。振る舞いの仕様からの再構築は、実装をコピーすることとは異なる行為であり、だからこそこのループは雰囲気ではなく証拠と基準にこだわるのです。エージェント・ツールを評価する人は——リバースエンジニアリング用であれ何であれ——このパターンを盗むべきです。成果物は、自信に満ちた答えではなく、検証された主張なのです。

ソフトウェアを出荷する人にとっての意味

これらのどれも、クライアント側のコードを秘密にするものではありません。もともと秘密ではなかったのです。読み取りを安くするだけです。Ghidraを使いこなすアナリストは、あなたのアプリからAPIエンドポイント、機能フラグ、ライセンスのロジックを常に引き出すことができました——REA級のツールは、エージェントのサブスクリプションを持つジュニアが午後のうちに第一パスを終えられることを意味します。実務的な帰結は従来どおりで、ただ期限が短くなりました。出荷済みバイナリに埋め込まれた秘密——APIキー、プライベートなエンドポイント、唯一の正しい割引ルール——は実質的に公開されたも同然です。難読化は読み取りのコストを上げますが、障壁ではなく遅延です。そして、あなたのビジネスの成否がその秘密性にかかっているものはすべて、アプリの中ではなく、認証の背後にあるあなたのサーバー上に置かなければなりません。

防御も同じく華やかさとは無縁で、効果があります。秘密と価格・ライセンスの判断はサーバー側に置き、恒久的なキーではなく短命でスコープを絞ったトークンを発行し、リスクが正当化する場面ではプラットフォームの認証(Play Integrity、App Attest)を使い、悪用対策を設計する際にはクライアントの振る舞いが完全に観測可能だと想定することです。これはこのサイトの エージェント対応の教訓の鏡像です。そこでは、エージェントはあなたが設計したかどうかに関わらず、あなたのウェブサイトの機械向けの表面を読む、というのが要点でした。ここでは、エージェントがあなたのアプリのバイナリを同じように読みます。どちらの場合も、勝つ一手は、機械向けの表面が何を語るかを意図的に決めることです。

正当な用途——そして境界線

リバースエンジニアリングには立派で確立された用途があり、REA自身のドキュメントも同じリストを挙げています。自分自身のソフトウェアの解析(ソースを失ったコピーを含む)、セキュリティ研究と脆弱性分析、マルウェアとインシデントの調査、相互運用性——自分の製品を別の製品と連携させること——、CTF競技、そして教育です。多くの法域では、これらのいくつかは、それを禁じようとするライセンス条項に対してさえ保護されています。とりわけ相互運用性と誠実なセキュリティ研究がそうですが、詳細はさまざまであり、本記事は法的助言ではありません。

境界線も同じく明快です。ツールに対するMITライセンスは、対象に対するライセンスではありません。競合他社の製品をそのバイナリからクローンすること、DRMやライセンスの執行を打ち破ること、抽出したものを配布することを許可するものではありません。前のセクションのクリーンルーム・ループは、再構築をその線の正しい側に保つためにこそ存在します——コピーされた実装ではなく、振る舞いと証拠です。このサイト自身の解析ツールも、ミニチュアながら同じ線を引きます。静的、ローカル、読み取り専用、実行なし、回避なし——最初のひと目であり、重く法的に敏感な作業は、それに責任を持てるツールと人々に委ねられます。

自分で試してみる

REAにはNode.js 22以降が必要です。一つのコマンド——npx rea-agents setup——で、見つけたコーディングエージェントにそのMCPサーバーを登録し、対応するワークフローの指示をインストールします。そしてREA自身のdoctorコマンドが各エンジンをチェックします(ネイティブバイナリにはGhidraのようなネイティブエンジンがインストールされている必要があります。JADXはAPKをカバーします)。あなたが所有するソフトウェア、または検査する許可のあるサンプルに向けてください——自分で書いた小さなユーティリティが完璧な最初の対象です——そして、ある機能の仕組みを尋ねてみてください。擬似コードを読む前に、それが生成する仕様を読んでください。証拠へのリンクこそが真実のある場所です。

最初のステップのインストール不要版が欲しいなら、それこそがこのサイトの Binary File Inspector の役割です。PE、ELF、Mach-Oファイルをページにドロップすると、ブラウザでそのヘッダー、セクション、インポート、文字列を読むことができます——アップロードなし、実行なし、ツールチェーンなし。何も逆コンパイルはしませんし、その旨も明記されています。これは、REAの本格的な処理をセットアップする価値があるかどうか、そしてどのエンジン向けかを教えてくれる5分間のトリアージです。

出典とさらに読むもの

よくある質問

REAは元のソースコードを復元しますか?

いいえ。バイナリから元のソースコードを復元するものは何もありません——作者が書いた変数名、コメント、構造はコンパイル時に消えてしまいます。逆コンパイラが生成するのは擬似コード、つまり機械語コードが何をするかの読みやすい近似です。REAの貢献は、その証拠から体系的に作業し、振る舞いの仕様を書くことであり、それこそが忠実な再構築に実際に必要なものです。

アプリをリバースエンジニアリングすることは合法ですか?

それは、誰のアプリか、なぜか、そしてどこでかによります。自分自身のソフトウェアのリバースエンジニアリング、誠実なセキュリティ研究、相互運用性を達成するための作業は広く受け入れられており、法域によっては法的に保護されています。製品のライセンスはそれ以上を制限することがあり、DRMやアクセス制御の回避は意図にかかわらず多くの場所で禁止されています。REA自身のドキュメントも、それを許可された合法的な研究に限定しています——あなたもそうすべきです。答えが商業的に重要である場合、それはツールではなく、あなたの法域の弁護士への質問です。

REAを使うには今もGhidraをインストールする必要がありますか?

ネイティブバイナリについては、はい——REAはオーケストレーション層であり、エンジンではありません。インストールされた解析エンジン(Ghidra、IDA Pro、Hopper)を駆動し、そのdoctorコマンドでそれぞれをチェックします。APKはJADXを通り、一部の対象——JavaScriptやElectronのアプリ、ウェブサイト、ネットワークキャプチャ——はネイティブエンジンをまったく必要としません。インストールは一度だけ、午後の作業です。エージェントの持久力こそが、雇うことのできなかった部分です。