Communitygithub.com

Prompt-Motion/ReaReverse

使用 REA 對原生、受控、Electron/JavaScript、打包、韌體及瀏覽器目標進行逆向工程。利用已發布的成品或請求的執行時期證據來解釋功能、比較版本、反編譯程式碼,或指導重建。一般的原始碼儲存庫架構分析請跳過 REA。

ReaReverse 是什麼?

此技能(ReaReverse)為 AI 代理提供了一套全面的逆向工程能力,利用 REA(Reverse Engineering Agent)框架對廣泛的目標格式進行分析,包括原生二進位檔案、受控組件、Electron/JavaScript 應用程式、打包的 APK/IPA/MSIX 檔案、韌體影像以及在 Chromium/Electron 執行時期中的即時瀏覽器目標。它支援多種平台,例如 Claude Code、Coder、Codex、Cursor 和 Gemini CLI,並透過 MCP(模型上下文協定)伺服器或獨立的 npx 命令列介面運作。該技能並非透過安裝引擎或工具來立即啟動;而是提供詳細的指引,用於在 MCP 伺服器不可用時進行診斷連線問題、修復設定,以及使用備用方案。其核心價值在於讓開發人員和 AI 代理能夠檢查已部署的成品,而無需原始程式碼;解釋保留的執行時期證據(如 HAR、SAZ、PCAP 或 SQLite 快照);並透過反編譯或檢查中繼資料(例如 Go/Rust 建置資訊)協助功能重建、版本比較或特定部分的重新實作。工作流程強調首先透過選擇正確的工具來「路由目標」,以分類目標類型——使用 `open_binary` 處理原生二進位,使用 `analyze_javascript_application` 處理 Electron/JS 樹,或使用 `inspect_android_package` 處理 Android 應用程式。該方法將證據視為一等概念,並要求保留完整的內嵌證據記錄。總體而言,它透過提供結構化的逆向工程工作流程來減少對原始程式碼的依賴,從而補充標準的軟體開發工具。

相容平台✓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 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

REA

當主張依賴於已發布的二進位檔案或套件、反編譯、被動的應用程式執行時期證據,或與可用原始程式碼無法確立的行為進行比較時,請使用 REA。對於完整原始程式碼儲存庫的常規分析,請使用一般的儲存庫工具,不要執行 REA 就緒檢查或提供者命令。

僅在需要時連線

安裝此技能僅提供說明;它不會註冊 REA MCP 伺服器、安裝分析引擎,或為已在執行的代理新增工具。

如果 REA 工具可用且其註冊已知未過時,請直接處理目標。不要在每次調查前都執行診斷或設定。使用已連線伺服器的實際工具列表和輸入架構;從儲存庫主分支安裝的技能可能會描述舊版 npm 版本中沒有的功能。當該伺服器未宣告保留的參考時,請保留完整的內嵌證據。

如果工具缺失、客戶端封鎖了呼叫,或所需的提供者不可用,請閱讀連線與復原。診斷觀察到的阻礙因素,繼續有用的支援工作,並在修復後恢復原始任務。客戶端批准、shell 路徑、註冊和引擎可用性有不同的補救措施;避免對所有問題重複進行設定。

  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 工作流程。 使用 inspect_web_network_capture 和 format: "saz" 檢查已儲存的 SAZ; 連線 Everywhere 的獨立 MCP 伺服器以獲取即時流量。
  • 保留的 HAR/SAZ/原生 mitmproxy/aioquic qlog 擷取:inspect_web_network_capture。在有用時選擇原始記錄序數;檢查生產者欄位和位元組/數字輔助資料,而不擷取記錄的 URL 或聲稱即時歸因。請參閱 歷史擷取 了解確切的上游設定檔和憑證排除。Qlog 支援從 aioquic 1.5.0 JSON 0.3 開始;串流覆蓋範圍和端點遺失宣告不會復原主體或建立網路遺失。優先使用詳細資料摘要,然後是 kind qlog 追蹤/串流頁面;為貢獻/範圍頁面選擇一個追蹤、串流 ID 和方向。事實保留所有在選擇前記錄的事件範圍。不支援其他 qlog 佈局和 PCAP 關聯。
  • 使用者擁有的已開啟 Electron 執行時期:list_electron_targets。在嘗試 electron-main Inspector 之前,使用 inspect_electron_fuses 檢查打包的保險絲;停用的 EnableNodeCliInspectArguments 表示應用程式會忽略 --inspect。
  • 封包欄位發現:inspect_packet_fields 在為 inspect_packet_capture 選擇欄位之前,搜尋已安裝的協定和欄位名稱/類型。查詢/翻頁相關記錄;註冊並不建立觀察到的流量。
  • 記錄的封包擷取:inspect_packet_capture,搭配選定的 TShark 欄位、顯示過濾器和解碼規則。需要 Linux、util-linux prlimit 和 REA_TSHARK_COMMAND;請參閱 擷取指南。 封包限制計算過濾前的輸入封包數。輸出預設為 50 個符合的框架;使用 match_offset / match_limit 進行後續翻頁,或使用明確的 null 限制以獲得完整的符合輸出。跨頁面保留來源摘要。此操作不執行即時擷取。 對於位址/DNS/SNI/協定摘要,使用帶有 MCP 詳細資料摘要的 inspect_pcap_capture,然後是保留的 kind 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;保留確切的位元組/工具標識和解碼後的 WAT。明確選擇 JavaScript 膠水程式碼和候選路徑,並保留 URL/路徑模糊性。不進行隱含的擷取或目標執行;WAT 不是原始來源。請參閱 WASM 指南。
  • 明確的本機 EVM 位元組碼載體:inspect_evm_interface,搭配呼叫者選擇的 raw 或 hex 編碼。保留載體/解碼後的摘要,並將選擇器、引數字串和可變性視為推斷的候選項;此操作不執行鏈查找或目標執行。對於沒有十六進位或重複標準輸出的完整推斷介面,發現支援並選擇 detail: "summary";完整的證據在其原始標識下保持保留。使用回傳的 parent_evidence_id 進行確切的函式或 bytecode_hex/stdout/stderr 頁面。候選覆蓋範圍並不建立介面完整性。請參閱 EVM 位元組碼指南。
  • 嵌入的 Go 編譯器、模組或建置設定中繼資料:inspect_go_binary,搭配明確的本機檔案。此內建的無需目標檢查不需要 Go 安裝或反組譯器。保留原始模組位元組和來源範圍;缺失的中繼資料並不證明二進位檔案不是 Go 的,未解析的文字記錄保持明確。請參閱 Go 二進位指南。
  • 嵌入的 cargo-auditable Rust 依賴項中繼資料:inspect_rust_binary,搭配明確的本機 ELF、PE 或精簡 Mach-O 檔案。此內建的無需目標檢查不需要 Rust 安裝或反組譯器。保留套件順序、依賴項索引和章節檔案範圍。缺失的 .dep-v0 章節是 null 中繼資料,並非證明二進位檔案沒有依賴項。一個 rustc 提交雜湊是從唯讀 /rustc/<40-hex>/ 路徑推斷得出的。請參閱 Rust 二進位指南。
  • 明確的本機 SQLite 資料庫快照:inspect_sqlite_database。使用 Node.js 24.x >=24.15 或 26+(提供原生 SQLite 限制)進行檢查。首先讀取架構(預設為緊湊清單),或在需要行時選擇一個確切的普通表和 columns。預設值是所選表的架構和 20 行;為完整的儲存架構請求 schema_scope: "database"。保留資料庫和現有同級 WAL 的標識;行樣本會報告截斷並具有未指定的順序。使用靜止的快照,而不是假設即時的資料庫/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.

相關技能