Community研究與資料分析github.com

REA(逆向工程代理人)

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

REA(逆向工程代理人) 是什麼?

這是一個專門為 AI 代理(如 Claude Code、Cursor、Codex 等)設計的逆向工程技能。其主要目的是當使用者的查詢涉及已出貨的二進位檔案、套件、反編譯結果、應用程式運行時證據,或需要比較未在原始碼中明確定義的行為時,引導代理使用 REA(Reverse Engineering Agent)工具集。對於擁有完整原始碼的一般儲存庫分析,此技能會指示代理不要執行 REA 的相關命令,而是使用常規的程式碼庫工具。 此技能支援廣泛的目標類型,包括原生二進位(如 PE、ELF、Mach-O)、受控 .NET 組件、Electron/JavaScript 應用程式(包括 ASAR 封存)、Android APK、韌體映像、網頁瀏覽器、網路封包捕獲(PCAP、HAR、SAZ)、邏輯/訊號錄製、WebAssembly、EVM 位元組碼、Go 與 Rust 二進位、SQLite 資料庫等。它根據目標類型建議具體的 REA 工具,並提供詳細的連接、診斷和設定修復指南,以處理 MCP(模型上下文協定)伺服器未就緒的情況。 此技能的關鍵組成部分包括:識別何時應使用 REA(而不是一般分析)、診斷並修復連線問題的方法、針對特定目標類型選擇正確工具的詳細路由指南,以及當 MCP 設定不可用時使用命令列介面(CLI)的後備方案。它還明確指定了依賴項(如 Node.js、npm、Java、Ghidra、IDA、JADX、Binwalk、Unblob)不會由 REA 安裝,而是必須預先存在於系統中。

相容平台✓Claude Code✓Codex CLI✓Cursor✓Antigravity✓Gemini CLI✓OpenCode✓Windsurf
npx skills add https://github.com/pierandrearizzo01/Claude/tree/HEAD/.claude/skills/reverse-engineer-anything

Installed? Explore more 研究與資料分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

REA

當某個主張依賴於已出貨的二進位檔案或套件、反編譯結果、被動的應用程式運行時證據,或與未在可用原始碼中確立的行為進行比較時,請使用 REA。對於完整原始碼儲存庫的一般分析,請使用正常的儲存庫工具,且不要執行 REA 就緒狀態或提供者命令。

僅在需要時連接

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

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

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

  1. 在不更改 REA 或用戶端設定的情況下進行診斷。npx 可能會下載套件並寫入 npm 的快取。對於 Codex,請執行 npx -y [email protected] 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 [email protected] setup --client codex --dry-run --json。使用當前客戶端的 ID,顯示其確切的提議路徑、備份和更改,並在設定寫入設定或安裝 Hopper 之前獲得批准。Setup 通常也會安裝匹配的捆綁技能;在審查的計畫中包含該替換。獲得批准後,使用 npx -y [email protected] setup --client codex --yes 應用相同的範圍。僅在需要且明確批准該獨立安裝時,才新增 --install-hopper。
  4. 重新啟動/重新連接受影響的代理。驗證 REA 工具確實出現在工作階段中,然後恢復原始調查。如果它們仍然不存在,請檢查客戶端的 MCP 啟動錯誤,而不是重複設定。

REA setup 從不安裝或升級 Node.js、npm、Homebrew、Java、Ghidra、IDA、JADX、Binwalk 或 Unblob。使用現有的前置條件;不要安裝不相關的軟體來修復 MCP 註冊。對於不支援的客戶端,請使用版本鎖定的 rea-agents 套件進行手動 stdio 註冊,或通過 CLI 繼續。

對於運算元提供的 JavaScript 樹或 ASAR,具體的 CLI 後備方案是:

npx -y [email protected] analyze-javascript-application /absolute/path/to/app --json

無需 MCP 註冊或原生引擎。請像對待 MCP 結果一樣仔細閱讀返回的證據、圖表、限制和未知項;CLI 會直接返回證據記錄。此後備方案並不證明 MCP 已設定。原生 CLI 任務仍然需要其選擇的引擎。優先使用現有的 rea CLI。當未安裝任何 CLI 且 REA 套件獲取在授權範圍內時,請改用 npx -y [email protected]。設定修復從唯讀 setup 計畫開始;在應用授權的更改之前顯示路徑、備份和技能替換。保留現有的批准和目標執行邊界。REA setup 從不安裝或升級不相關的軟體,包括 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。在有用時選擇原始記錄序號;檢查生產者欄位和位元組/數字 sidecar,而不擷取記錄的 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 的欄位之前,搜尋已安裝的通訊協定和欄位名稱/類型。查詢/分頁相關記錄;註冊並不能建立已觀察的流量。
  • 記錄的封包捕獲:使用選定的 TShark 欄位、顯示過濾器和解碼規則執行 inspect_packet_capture。需要 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 位元組碼載體:使用呼叫者選擇的 raw 或 hex 編碼執行 inspect_evm_interface。保留載體/已解碼摘要,並將選擇器、引數字串和可變性視為推斷的候選項;此操作不執行鏈查找或目標執行。對於沒有十六進位或重複標準輸出的完整推斷介面,發現支援並選擇 detail: "summary";完整的證據在其原始身份下保留。使用返回的 parent_evidence_id 取得確切的函數或 bytecode_hex/stdout/stderr 頁面。候選覆蓋率並不建立介面的完整性。請參閱 EVM 位元組碼指南。
  • 嵌入的 Go 編譯器、模組或建置設定元資料:使用明確的本機檔案執行 inspect_go_binary。此內建無目標檢查不需要安裝 Go 或反組譯器。保留原始模組位元組和來源範圍;缺少元資料並不證明二進位檔案不是 Go,且未解析的文字記錄保持明確。請參閱 Go 二進位指南。
  • 嵌入的 cargo-auditable Rust 依賴項元資料:使用明確的本機 ELF、PE 或瘦 Mach-O 檔案執行 inspect_rust_binary。此內建無目標檢查不需要安裝 Rust 或反組譯器。保留套件順序、依賴項索引和章節檔案範圍。缺少 .dep-v0 章節是空元資料,而不是證明二進位檔案沒有依賴項。rustc 提交雜湊是來自唯讀 /rustc/<40-hex>/ 路徑的推斷。請參閱 Rust 二進位指南。
  • 明確的本機 SQLite 資料庫快照:inspect_sqlite_database。使用提供原生 SQLite 限制的 Node.js 24.x >=24.15 或 26+ 進行檢查。首先讀取架構(預設為緊湊清單),或當需要行時,選擇一個確切的普通資料表和 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 輸入,並保持其資料庫開啟。現代的 headle...

[此處截斷]

相關技能