Communitygithub.com

Prompt-Motion/ReaReverse

REAを活用して、ネイティブ、マネージド、Electron/JavaScript、パッケージ化、ファームウェア、ブラウザターゲットをリバースエンジニアリングします。出荷されたアーティファクトや要求されたランタイム証拠を使用して、機能の説明、バージョン比較、コードの逆コンパイル、復元のガイドを行います。通常のソースリポジトリアーキテクチャ分析にはREAを使用しません。

ReaReverse とは?

このスキルは、REA(Reverse Engineering Agent)ツールキットを効果的に使用するための詳細な指示を提供します。主な目的は、出荷されたバイナリ、パッケージ、逆コンパイル、またはパッシブアプリケーションランタイム証拠に依存するクレームを調査することです。完全なソースリポジトリの通常の分析には使用せず、代わりに通常のリポジトリツールを使用します。このスキルは、Claude Code、Cursor、Codex、Gemini CLI、Windsurf、Devinなど、多くの主要なAIエージェントプラットフォームで利用可能なREA MCPサーバーとの連携方法を定義します。REAツールが利用可能な場合は、診断やセットアップを毎回実行せずに直接使用します。ツールがない場合や登録が古い場合は、接続と復元の手順に従い、スコープ設定の修復、クライアントの再起動、またはCLIフォールバックを実行します。ターゲットタイプに応じて、適切なREAツール(バイナリ分析用の `open_binary`、JavaScript/Electronアプリ用の `analyze_javascript_application`、Android APK用の `inspect_android_package` など)をルーティングします。

対応✓Claude Code✓Codex CLI✓Cursor✓Antigravity✓Gemini CLI✓OpenCode✓Windsurf
npx skills add https://github.com/Prompt-Motion/ReaReverse/tree/HEAD/.agents/skills/reverse-engineer-anything

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

REA

クレームが出荷されたバイナリやパッケージ、逆コンパイル、 パッシブなアプリケーションランタイム証拠、または 利用可能なソースでは確立されていない動作との比較に依存する場合は、REAを使用します。完全なソースリポジトリの通常の分析には、通常のリポジトリツールを使用し、REAの準備コマンドやプロバイダーコマンドを実行しないでください。

必要なときのみ接続

このスキルをインストールすると指示が提供されますが、REA MCPサーバーを登録したり、分析エンジンをインストールしたり、すでに実行中のエージェントにツールを追加したりするわけではありません。

REAツールが利用可能で、その登録が古くなっていないことがわかっている場合は、直接ターゲットに進んでください。調査のたびに診断やセットアップを実行しないでください。接続されているサーバーの実際のツールリストと入力スキーマを使用してください。リポジトリのメインからインストールされたスキルは、古いnpmリリースにはない機能を説明する場合があります。サーバーが保持参照を宣伝しない場合は、完全なインライン証拠を保持してください。

ツールがない場合、呼び出しがクライアントによってブロックされている場合、または必要なプロバイダーが利用できない場合は、接続と復元をお読みください。観察されたブロッカーを診断し、有用なサポート作業を続け、修理後に元のタスクを再開してください。クライアントの承認、シェルPATH、登録、エンジンの可用性には異なる修正方法があります。すべてに対してセットアップを繰り返さないでください。

  1. REAまたはクライアントの設定を変更せずに診断します。npx はパッケージをダウンロードしてnpmのキャッシュに書き込む場合があります。Codexの場合は、npx -y rea-agents@latest doctor --client codex --json を実行します。現在サポートされているクライアントに置き換えてください:claude_code、claude_desktop、codex、cursor、gemini_cli、windsurf、devin、opencode、antigravity、copilot_cli、commandcode、vscode、grok_build、omp、または grok_bot。grok_bot にはローカルファイル登録がありません。doctorはGrok Botチャットステップを報告し、セットアップは mcp.json を書き込みません。クライアントが不明な場合は、doctor --json を使用してセットアップスコープを選択する前に、その登録結果を検査してください。
  2. 理由を区別します。登録の欠落、不正な形式、または古いものは、スコープ設定された設定の修復が必要です。アクティブセッションにツールがない適切な登録は、再起動/再接続が必要です。doctorは現在のエージェントが接続したことを証明できません。プロバイダーの欠落は、そのプロバイダーを必要とするタスクにのみ影響します。静的なJavaScriptの検査にはHopperもGhidraも必要なく、Androidの検査には別途JADX/Javaの前提条件が必要です。
  3. 設定の修復には、読み取り専用の計画を準備します:npx -y rea-agents@latest setup --client codex --dry-run --json。現在のクライアントのIDを使用し、正確な提案されるパス、バックアップ、変更を表示し、セットアップが設定を書き込んだりHopperをインストールする前に承認を得てください。セットアップは通常、一致するバンドルスキルもインストールします。その置き換えをレビュー計画に含めてください。承認後、同じスコープを npx -y rea-agents@latest setup --client codex --yes で適用します。その別個のインストールが必要で明示的に承認された場合にのみ --install-hopper を追加します。
  4. 影響を受けるエージェントを再起動/再接続します。セッションにREAツールが実際に表示されることを確認し、元の調査を再開します。それでも表示されない場合は、セットアップを繰り返すのではなく、クライアントのMCP起動エラーを調査します。

REAのセットアップは、Node.js、npm、Homebrew、Java、Ghidra、IDA、JADX、Binwalk、またはUnblobをインストールまたはアップグレードすることはありません。既存の前提条件を使用し、MCP登録を修復するために関連のないソフトウェアをインストールしないでください。サポートされていないクライアントの場合は、バージョン固定の rea-agents パッケージを使用した手動のstdio登録を使用するか、CLIを介して続行します。

オペレーターが提供するJavaScriptツリーまたはASARの具体的なCLIフォールバックは次のとおりです:

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

MCP登録やネイティブエンジンは必要ありません。返された証拠、グラフ、制限、不明点をMCP結果と同様に注意深く読み取ってください。CLIは証拠レコードを直接返します。このフォールバックはMCPが設定されていることを証明するものではありません。ネイティブCLIタスクには、選択したエンジンが依然として必要です。既存の rea CLIを優先します。インストールされておらず、REAパッケージの取得が許可された範囲内にある場合は、代わりに npx -y rea-agents@latest を使用します。設定の修復は読み取り専用のセットアップ計画から始まります。許可された変更を適用する前に、パス、バックアップ、スキルの置き換えを表示します。既存の承認とターゲット実行の境界を維持します。REAのセットアップは、Node.js、npm、Homebrew、Java、Ghidra、IDA、JADX、Binwalk、またはUnblobを含む、関連のないソフトウェアをインストールまたはアップグレードすることはありません。

最初にターゲットをルーティング

ユーザーが提供したターゲットから最初のツールを選択します。アクティブターゲットのネイティブまたはアーカイブワークフローには open_binary を使用します。ターゲットフリーツールは、独自の明示的なパスまたはエンドポイントを受け取り、それを必要としません。

  • ASARまたは抽出されたJavaScript/Electronツリー: analyze_javascript_application。

  • アーカイブ/パッケージメンバーインベントリ(ZIP/APK/IPA/MSIX/AppXまたはDMG): 提供されたローカルパスで open_binary を使用します。グラフと調査結果が質問に答えるのに役立つ場合は inspect_artifact を使用します。

  • Android APKコード、クラス、メソッド、または着信参照: inspect_android_package、次に宣伝されている場合に焦点を当てたAndroidツール。 アーカイブメンバーインベントリは引き続き上記のアーカイブルートを使用します。

  • マネージドPE/CLIアセンブリ:inspect_managed_artifact。

  • ファームウェアイメージ:宣伝されている場合は inspect_firmware_regions。抽出が要求された場合は、呼び出し元が選択した新しい絶対出力ディレクトリを指定して extract_firmware を使用します。これらのツールは、Linux上の呼び出し元が提供するBinwalk/Unblobを使用します。ファームウェアガイドを参照してください。

  • .NET NativeAOT PE/ELF:ネイティブGhidra分析。ネイティブコードは疑似コードを生成できます。オプションのメタデータ回復とサポートされているホスト/レイアウト境界については、references/native-and-artifacts.md のNativeAOTワークフローを参照してください。

  • ユーザー所有のブラウザページがすでに開いている場合:list_browser_targets。

  • エージェントが実行する必要があるブラウザアクション(クリック、入力、移動): 宣言されたアクションで capture_browser_scenario を使用します。接続/起動と焦点を絞ったフォローアップブラウザツールについては、ランタイム観測を参照してください。

  • Fiddler Everywhereトラフィックまたはネイティブ .saz キャプチャ:Fiddlerワークフローをお読みください。保存されたSAZを inspect_web_network_capture と format: "saz" で検査します。ライブトラフィックについては、Everywhereの別のMCPサーバーに接続します。

  • 保持されたHAR/SAZ/ネイティブmitmproxy/aioquic qlogキャプチャ:inspect_web_network_capture。必要に応じて元のレコード順序を選択します。URLを取得したりライブ属性を主張したりせずに、プロデューサーフィールドとバイト/ナンバーサイドカーを検査します。正確なアップストリームプロファイルと資格情報の除外については、履歴キャプチャを参照してください。Qlogサポートはaioquic 1.5.0 JSON 0.3から始まります。ストリームカバレッジとエンドポイント損失宣言は、ボディを回復したりネットワーク損失を確立したりしません。詳細サマリーを優先し、次に種類qlogトレース/ストリームページを選択します。コントリビューション/レンジページには、1つのトレース、ストリームID、および方向を選択します。ファクトは、選択前のすべての記録されたイベントのスコープを保持します。他のqlogレイアウトとPCAP相関はサポートされていません。

  • ユーザー所有のElectronランタイムがすでに開いている場合:list_electron_targets。electron-mainインスペクターを試みる前に、inspect_electron_fuses でパッケージ化されたヒューズを確認します。無効になっている EnableNodeCliInspectArguments は、アプリが --inspect を無視することを意味します。

  • パケットフィールド発見:inspect_packet_fields は、inspect_packet_capture のフィールドを選択する前に、インストールされているプロトコルとフィールド名/タイプを検索します。関連するレコードをクエリ/ページングします。登録は観測されたトラフィックを確立しません。

  • 記録されたパケットキャプチャ:選択されたTSharkフィールド、表示フィルター、およびデコードアズルールで inspect_packet_capture を使用します。Linux、util-linux prlimit、および REA_TSHARK_COMMAND が必要です。キャプチャガイドを参照してください。パケット制限は、フィルタリング前の入力パケットをカウントします。出力はデフォルトで50の一致フレームになります。後のページには match_offset / match_limit を使用するか、完全な一致出力には明示的なnull制限を使用します。ソースダイジェストをページ間で保持します。これはライブキャプチャを実行しません。 アドレス/DNS/SNI/プロトコルサマリーには、MCP詳細サマリーで inspect_pcap_capture を使用し、次に保持された種類pcapページを使用します。Wireshark 4.x tsharkとcapinfos、およびLinux prlimitまたはWindows Job Objectsが必要です。パケットサマリーを参照してください。アドレスページには正確なDNS質問を選択します。ページの枯渇はネットワークの完全性を証明しません。これは録音を読み取り、トラフィックを取得しません。

  • デコーダー発見:inspect_signal_decoders は、インストールされているデコーダーIDまたは選択されたデコーダーヘルプ(チャネルとオプションを含む)を検索します。設定を選択する前に関連する詳細をクエリおよびページングします。これはハードウェアをスキャンしません。

  • 記録されたロジック/シグナルトレース:明示的なデコーダー、チャネル、プロトコル設定で decode_signal_recording を使用します。Linuxでutil-linux prlimitを使用する場合、REA_SIGROK_COMMAND を介してsigrok-cli 0.7.2を提供します。録音ガイドを参照してください。出力はデフォルトで50のリテラル行になります。アノテーションクラスを選択し、line_offset / line_limit でページングするか、残りのすべての出力には明示的なnullを使用します。ウィンドウカウントは表示行であり、アノテーションやサンプルではありません。ソースダイジェストをページ間で保持します。これは既存のファイルを読み取ります。ハードウェア信号を取得しません。

  • 明示的なローカルWebAssemblyアーティファクト:inspect_wasm_artifact。REA_WABT_BIN_DIRECTORY を介してWABT 1.0.42を提供します。正確なバイト/ツールIDとデコードされたWATを保持します。JavaScriptグルーと候補パスを明示的に選択し、URL/パスのあいまいさを保持します。暗黙のフェッチやターゲット実行はありません。WATは元のソースではありません。WASMガイドを参照してください。

  • 明示的なローカルEVMバイトコードキャリア:呼び出し元が選択した raw または hex エンコーディングで inspect_evm_interface を使用します。キャリア/デコードされたダイジェストを保持し、セレクター、引数文字列、可変性を推測された候補として扱います。これはチェーンルックアップやターゲット実行を実行しません。完全な推測インターフェースについては、16進数や重複するstdoutなしで、サポートを発見し detail: "summary" を選択します。完全な証拠は元のIDの下に保持されたままになります。正確な関数または bytecode_hex/stdout/stderrページには、返された parent_evidence_id を使用します。候補カバレッジはインターフェースの完全性を確立しません。EVMバイトコードガイドを参照してください。

  • 埋め込まれたGoコンパイラ、モジュール、またはビルド設定メタデータ:明示的なローカルファイルで inspect_go_binary を使用します。この組み込みのターゲットフリー検査には、Goのインストールや逆アセンブラは必要ありません。生のモジュールバイトとソース範囲を保持します。メタデータがないことはバイナリがGoではないことを証明せず、解析されていないテキストレコードは明示的なままです。Goバイナリガイドを参照してください。

  • 埋め込まれたcargo-auditable Rust依存関係メタデータ:明示的なローカルELF、PE、またはシンMach-Oファイルで inspect_rust_binary を使用します。この組み込みのターゲットフリー検査には、Rustのインストールや逆アセンブラは必要ありません。パッケージの順序、依存関係インデックス、およびセクションファイル範囲を保持します。.dep-v0 セクションがない場合はnullメタデータであり、バイナリに依存関係がないことの証明ではありません。rustcコミットハッシュは、読み取り専用の /rustc/<40-hex>/ パスからの推測です。Rustバイナリガイドを参照してください。

  • 明示的なローカルSQLiteデータベーススナップショット:inspect_sqlite_database。ネイティブSQLite制限を提供するNode.js 24.x >=24.15または26+で検査します。最初にスキーマを読み取ります(デフォルトでコンパクトなインベントリ)。または、行が必要な場合は正確な通常のテーブルと columns を選択します。デフォルトは選択されたテーブルのスキーマと20行です。完全な保存スキーマには schema_scope: "database" を要求します。データベースと既存の兄弟WALの両方のIDを保持します。行サンプルは切り捨てを報告し、順序は指定されていません。ライブデータベース/WALペアがアトミックにコピーされたと想定するのではなく、静かなスナップショットを使用します。SQLiteガイドを参照してください。

  • オフラインレイアウト、シンボル、再配置、または静的軽減証拠のための明示的なLinux ELFファイル:inspect_binary_layout。このターゲットフリー操作は、逆アセンブラデータベースを開かずに、呼び出し元が提供するpwntoolsを使用します。その生の場所と推測/カバレッジの制限を保持します。オフラインバイナリガイドを参照してください。

  • 提供されたLinux x86-64 ELFコア:inspect_recorded_crash。ライブターゲットを開かずに、記録されたすべてのスレッド、生のノート、およびソースにバインドされたレジスタを読み取ります。履歴PIDはライブプロセスを選択しません。コアのみのマッピング候補が役立つ場合にのみ include_debugger_context を要求します。記録されたクラッシュガイドを参照してください。

  • PEリソースタイプ/名前/言語ツリーと静的なアイコングループ参照:明示的なパスで inspect_pe_resources を使用します。このポータブル操作にはアクティブなターゲットやエンジンは必要ありません。不透明なペイロードはファイル範囲とSHA-256を保持します。

  • ネイティブ実行可能ファイル、ライブラリ、または分析データベース:open_binary を使用し、次に焦点を絞った分析ツールを直接呼び出します。メタデータまたはインベントリコンテキストが有用で、選択したプロバイダーから利用可能な場合は binary_overview を呼び出します。

既存のIDA MCP構成の場合は、元の入力バイナリと provider_id: "ida" を指定して open_binary を使用します。.idb または .i64 データベースを渡さないでください。レガシーアタッチプロファイルは、SHA-256ですでに開いているGUI入力をバインドし、そのデータベースを開いたままにします。モダンh...

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

関連スキル