前言

把 APK、Windows 程式、封包或一段混淆 JavaScript 丟給 AI Agent,最大的問題通常不是它完全不知道任何工具,而是它很容易太快開始行動:APK 該先用 jadx 還是 apktool?網站測試是否真的取得授權?缺少 Frida 時能不能自動安裝?做完之後,結論能不能回到原始證據?

zhaoxuya520/reverse-skill 想把這些問題整理成一套「資安任務 Skill Router」。它不是新的反編譯器,也不是一鍵入侵工具,而是用路由規則、專門 Skill、工具索引、授權 scope 與證據工作流,要求 Claude Code、Codex、Cursor 等外部 Agent 先選方法,再呼叫 jadx、Frida、IDA、radare2、Burp Suite 或其他既有工具。

這種設計比「把所有資安知識塞進一個超長 prompt」更有工程結構,但權限也很高。Repository 的 AI bootstrap 會要求 Agent 執行本機腳本、檢查工具,必要時按 manifest 自舉依賴;部分模組還涉及掃描、漏洞驗證、惡意程式與利用鏈。因此研究 reverse-skill,不能只看它支援多少工具,還要看授權閘門是否真的能約束執行,以及你是否願意信任這套指令與供應鏈。

結論先講:它是路由包,不是資安能力本身

本次分析固定到使用者提供連結時可見的 main 快照 41bd788c34f82d26ad9e51bcba838b0d1220928e。從固定版本的 README 可以看到,它把自己定位成 Reverse Engineering、Authorized Penetration Testing 與 Security Research 的 client-neutral Skill Router。

新手可以把它想成資安實驗室裡的「值班分流員」:

  • routing.json 決定這類任務的 PRIMARY Skill。
  • case-init 先建立案件與授權範圍。
  • 專門 Skill 提供該情境的方法與步驟。
  • tool-index 記錄這台電腦有哪些真實工具。
  • bootstrap 只在需要時準備缺少的能力。
  • timeline、workitems 與 Evidence chain 保存過程。
  • case review、報告與 field journal 收斂結果。

真正反編譯、動態 Hook、掃描或擷取封包的仍是第三方工具;真正判斷證據與承擔法律責任的仍是人。裝了 reverse-skill,不代表 Agent 自動成為資安專家,也不代表任何目標都取得測試授權。

一次任務的完整資料流

固定版本 README 提供的主線可以整理成:

使用者提出任務
    ↓
README_AI.md / RULES.md
    ↓
master-route 讀取 routing.json
    ↓
選出 PRIMARY Skill
    ↓
case-init 建立 work/<case>/scope.md
    ↓
授權與 network profile gate
    ↓
讀取 PRIMARY/SKILL.md
    ↓
tool-index 檢查本機工具
    ↓
必要時依 manifest bootstrap
    ↓
執行靜態/動態/網路分析
    ↓
Timeline + Evidence → Finding → Path
    ↓
case-review → report → field-journal

這條鏈有三個特別重要的邊界:路由只是在選方法;scope 才決定可不可以對目標採取行動;Evidence chain 才決定報告中的主張能不能回到證據。把三者混在一起,就會出現「選到滲透 Skill,所以一定有權限執行」的危險誤解。

路由核心如何工作?

routing.json 是 Single Source of Truth

Repository 把結構化規則集中在 skills/config/routing.json,再由平台原生 router 選出 PRIMARY。完整 routing.md 是給人與 Agent 查閱的矩陣,不應成為第二套會漂移的規則來源。

這個切法比在多份 Markdown 重複維護「APK → apk-reverse」安全。程式可以針對 routing config 做 schema、唯一性與 regression 檢查,也能在新增模組時要求同步 benchmark。它能驗證的是「這個 hint 被分到預期模組」,不是該模組最後做出的資安結論一定正確。

Master Skill 只負責分流

skills/SKILL.md 列出 APK、.NET、IDA、JavaScript、firmware、malware、API、LLM security、forensics 等大量模組。真正執行時不應把它們全部載入 context;router 先選 PRIMARY,再讀對應目錄的 SKILL.md

這是 Agent Skill 最有價值的 progressive disclosure:平常不需要讓模型同時記住 Android 重打包、GraphQL、YARA、Kerberos 與 firmware extraction。需要哪一條工作流,再載入哪一套方法。

一條路不通,可以切換方法

逆向工程很少只有單一路徑。靜態反編譯看不到 runtime key,可以切到動態 Hook;Java 層沒有邏輯,可以往 native .so;IDA 不可用,可以改用 Ghidra 或 radare2 做初步分析。

Router 的價值不是永遠第一次就選對,而是讓切換方法仍有清楚的案件、證據與決策紀錄,避免 Agent 在不同工具間無限亂試。

Scope Gate:授權不是一句「這是我的網站」

RULES.md 明定 target ACT 之前,scope.md 必須有 auth.status=granted 與合法 network profile;本機離線樣本則走明確的 offline-sample preset。--force 也不應繞過 hard gate。

不過,case-init.sh--auth-grantedoffline-samplectf-publicown-system 都是由 CLI 把狀態寫成 granted,不會向合約系統、資產擁有者或 CTF 平台查核。它能迫使流程留下聲明,不能證明聲明是真的。

這個設計方向是對的,因為資安任務至少要先回答:

  • 誰授權?
  • 可以測試哪些 domain、IP、App、binary 或帳號?
  • 允許掃描、利用、資料讀取還是只做被動觀察?
  • 哪些時間、速率與資料類型不可碰?
  • 發現高風險問題時怎麼停止與通報?

但必須看清楚:這些 gate 主要由腳本、案件檔案與 Agent instruction 實作,不是 hypervisor、網路 ACL 或法律授權平台。若執行者直接跳過 router、手動呼叫 nmap,Markdown 規則本身無法阻擋封包送出。

高風險環境仍要用外部控制:隔離 VM、egress allowlist、測試帳號、專用 VPN、雲端 security group、API rate limit、操作審批與可撤銷憑證。scope.md 是可稽核的意圖紀錄,不是 sandbox。

Tool Index 與按需自舉

第一次使用時,README 要求執行平台對應的 refresh-tool-index,產生這台電腦的 skills/tool-index.md 與 JSON。之後 Agent 不猜工具路徑,而是先查索引:

  • 已存在:使用記錄的實際路徑與版本。
  • 不存在但任務不需要:不要安裝。
  • 不存在且 PRIMARY 需要:交給 bootstrap。
  • 商業授權或未登記工具:提供人工安裝,不假裝能自動完成。

這能減少每個 Agent 重複安裝 jadx、Frida 或 radare2,也讓多個 client 共用同一份能力清單。README 列出的基本 runtime 包含 Java/JDK、Node.js 22.12+ 與 Python 3;實際需求則依任務而異。

按需安裝很方便,也正是最需要審查的地方。Bootstrap 可能下載 package、執行 shell/PowerShell、註冊 MCP server 或修改 local configuration。Manifest 確實固定了部分 npm/pip 版本、Git commit,以及 jadx、apktool release asset 的 SHA-256;但 apt、Homebrew、winget latest、部分 GitHub API 動態下載、Docker tag 與 Maven 依賴仍未全部固定。即使 coherence check 通過,也不能自動證明下載來源、transitive dependency、install script 與 binary 都可信。

Evidence → Finding → Path 是什麼?

Agent 報告常見的問題,是先產生一句看似合理的結論,讀者卻不知道它來自 strings、反編譯、動態封包還是猜測。Reverse-skill 要求把輸出拆成:

  1. Evidence:可保存、可 hash、可定位的觀察,例如檔案、封包、函式、位址或 tool output。
  2. Finding:證據支持的判斷,附信心與限制。
  3. Path:從哪些 Evidence 經過哪些分析到達 Finding。

Case review 再檢查 scope、artifact hash、workitems、timeline 與引用是否一致。這不能保證分析一定沒有 false positive,但至少能區分「有可追溯證據的結論」和「模型說它看起來像」。

對新手而言,這比一開始學會多少攻擊命令更重要。資安報告最難的不是讓內容看起來專業,而是第三方能不能重現、反駁與確認影響。

Field Journal 不是模型自動訓練

Repository 使用 field-journal/ 保存匿名化經驗、先例與索引,下一次任務先查是否有類似案例。官方把這稱為 self-evolving knowledge base;更精確的理解是:把已驗證經驗寫回可搜尋文件,讓未來 Agent 重用。

它不會修改模型權重,也不代表每次任務都自動提升底層模型能力。若 journal 寫入錯誤結論、敏感資料或惡意指令,未來 Agent 反而可能重複使用錯誤經驗。因此 write-back 需要人工 review、來源、信心、匿名化與版本控制。

支援哪些情境?

固定快照涵蓋的範圍很廣,適合先用類別理解:

類別 例子 常見工具方向
Mobile APK、Android、iOS jadx、apktool、Frida、Objection
Binary PE、ELF、.so、.NET IDA、Ghidra、radare2、dnSpyEx
Web/API JavaScript、HTTP、REST、GraphQL Browser/CDP、Burp、request replay
Malware/Forensics 樣本、YARA、記憶體、PCAP 靜態、動態、timeline、IOC
Infrastructure Firmware、cloud、K8s、AD、Wi-Fi 專門 triage 與授權測試流程
AI Security Prompt injection、tool abuse、Skill/MCP supply chain 測試案例、Evidence 與 policy review
CTF/Lab Pwn、逆向、Web challenge 隔離 sandbox 與競賽工作流

這份清單表示「有對應 Skill 或方法文件」,不表示所有工具會隨 repository 一起安裝,也不表示每個模組都在真實 production target 完成過端到端驗證。

安裝前,先不要讓 Agent 自動執行

官方 Quick Start 是 clone repository,再刷新 tool index:

git clone https://github.com/zhaoxuya520/reverse-skill.git
cd reverse-skill
bash skills/scripts/refresh-tool-index.sh

但對安全 Skill repository,更保守的順序應該是:

  1. 固定 commit,不直接信任持續變動的 main;目前 v1.0.1 release 與研究快照已有大量 commit 差距。
  2. 先由人閱讀 README_AI.mdRULES.md、router、case-init、bootstrap manifest 與實際 script。
  3. 第一輪只在無憑證、預設斷網的 VM 跑純 router 與 dummy offline case;先不要 refresh、bootstrap 或註冊 MCP。
  4. 確定要用某個 capability 後,逐一審核它的來源、版本、hash、license 與安裝副作用。
  5. Tool refresh 會讀 PATH、應用程式路徑,以及 Claude/Codex MCP config;只在低權限測試帳號執行。
  6. 關閉自動 MCP global registration,僅對明確 client opt-in。
  7. 檢查會寫入哪些 work/、log、report、tool index 與 journal 檔案。

特別要注意 README_AI.md 不是被動說明文件。它直接指示讀取它的 Agent「立即執行」tool refresh、平台偵測、router 與 case-init。對 coding agent 而言,這就是會觸發本機副作用的 prompt。

不要把陌生 repository 的 README 直接貼進擁有管理員權限、SSH key、雲端憑證與 production 網路的 Agent,再期待 instruction 裡的安全條款一定會保護你。先 review,再在受限環境載入,才是正確信任順序。

在 Claude Code、Codex 或其他 Agent 怎麼接?

Reverse-skill 的 routing core 宣稱 client-neutral:核心是 Markdown、JSON、PowerShell/Bash、Python 與真實工具,不要求特定模型。不同 Agent 要透過自己的 project instructions、Skill adapter 或 MCP 設定載入。

這不等於所有 client 都有相同的 enforcement:

  • Client 是否會自動讀 AGENTS.mdCLAUDE.mdSKILL.md 不同。
  • Bash、PowerShell、network、filesystem 與 approval mode 不同。
  • MCP registration 的位置與權限不同。
  • Context 壓縮後是否仍保留 scope 與 Evidence contract 也不同。

所以「支援 Codex」比較準確的意思是核心路由與文件能被 Codex 類 client 使用,不是 repository 自動替每個 host 完成官方整合或權限隔離。

測試與 CI 能證明什麼?

固定 README 宣稱 routing regression 有 173 個 cases、43 條 routing rules;固定 source 的 GitHub Actions 定義了 Windows、Ubuntu 與 macOS 的 routing、coherence、scope、syntax、case review 等檢查。本文沒有重跑 upstream suite;這些測試在對應 run 實際通過時,可以證明:

  • Hint 能否穩定映射到預期 PRIMARY。
  • Routing config 與生成文件是否漂移。
  • Scripts 在指定平台能否 parse 與完成 smoke path。
  • Bootstrap manifest 是否符合 repository 自己設定的 pin 規則。

它們不能證明:

  • IDA、Frida、Burp、Ghidra 與所有 MCP 組合在每台機器都能工作。
  • 173 個文字 hint 代表所有真實資安任務。
  • Agent 不會誤判授權或跳過 scope。
  • 每個漏洞 Finding 都正確、可利用且有實際影響。
  • 下載的第三方 binary 沒有供應鏈風險。

數量是 coverage signal,不是資安品質保證。採用前仍要查看當時 workflow 結果、實際測試資料與失敗條件,而不是只引用 README badge。

安全與供應鏈風險

1. Repository instruction 本身就是高權限輸入

README_AI.mdRULES.md 與各 Skill 都會影響 Agent 行為。只要其中一份文件遭竄改,就可能引導 Agent 執行 shell、下載 package、讀取環境變數或把結果送往外部服務。固定 commit、code review、signed release、最小權限與 egress control 不能省略。

2. Scope Gate 不是技術隔離

案件檔能留下授權聲明,但 CLI 可自行寫入 auth.status=granted,無法替代網路 ACL、VM、container、API credential scope 與人工審批。固定版本的 Burp MCP 雖有 scope_gateprivacy_mode 狀態,實際 request、scan 與 crawl dispatch 並未依這兩個旗標拒絕執行。高風險操作必須由 Agent 之外的 firewall、proxy allowlist 或 approval 機制阻擋。

3. Tool 與 MCP 擴大攻擊面

每增加一個 MCP server、desktop bridge 或 browser hook,就增加一個能讀寫本機和目標資料的程式。版本 pin 只能固定內容,不能證明內容安全;啟動服務還要檢查 port、bind address、authentication、log 與 update policy。

4. 分析資料通常很敏感

APK、binary、封包、source、token、漏洞與 report 可能受到 NDA、個資、營業秘密與漏洞揭露政策限制。work/、timeline、MCP log、LLM transcript 與 field journal 都要納入資料保存政策。

5. Root MIT 不代表整棵 tree 都是 MIT

頂層採 MIT License,但內含的 CTF-Sandbox-Orchestrator/ 是 GPLv3;另外下載或串接的 IDA Pro、JEB Pro、Burp Suite 等工具也各有自己的授權。重新散布整包、樣本、firmware 或目標程式前,仍要逐元件檢查授權與法律限制。

新手最安全的 PoC

第一次不要選真實公司網站、公開網路目標或來路不明的 malware。先只驗證「router 能產生 route、case 能留下 scope」:

  1. 建立全新的 VM,不放 SSH key、production .env 或個人 browser profile,預設封鎖 outbound。
  2. 固定 repository 到本文研究的 commit,先讀 README_AI.md、Master Skill、router、case-init 與 case-guard。
  3. 不執行 tool refresh、bootstrap、--start-services--mcp-host;避免讀取個人 MCP config,也不下載第三方工具。
  4. 在另一個空白目錄,以 master-route.sh --hint "offline APK reverse with jadx" 產生 route。
  5. 自建內容只有 not a real APKdummy.apk,再以 case-init.sh --preset offline-sample --sample <dummy path> 建立 case。
  6. 執行 case-guard.sh,人工確認 scope.md 的 network profile 是 offline、asset 只有 dummy path、ready_for_act=true
  7. 檢查 timeline、workitems 與 report 目錄後停止;不要真的分析 APK、連目標、回寫 field journal 或 commit work/
  8. VM snapshot 還原,確認沒有 client-global MCP、背景 service 或 credential 殘留。

這個 PoC 只能證明路由、案件檔與 guard 的文字契約能運作,不能證明 APK 能被解析、Agent 必定遵守規則、Bootstrap 安全或任何漏洞存在。只有流程與隔離可信之後,才逐個 capability 增加工具與授權範圍。

適合與不適合的情境

適合

  • 已經懂基本逆向或資安流程,想讓多個 Agent 共用一致路由與案件格式。
  • CTF、教學、自己擁有的 App、離線樣本與明確授權測試。
  • 團隊需要 tool inventory、Evidence chain、報告與經驗回寫。
  • 願意維護 VM、依賴、MCP、版本 pin 與人工 review。

不適合

  • 想靠安裝 Skill 取代資安基礎、法律判斷與人工證據審查。
  • 未取得書面授權的網站、帳號、App、內網或第三方 binary。
  • 把陌生 Skill 直接載入具有 production credential 的全權 Agent。
  • 要求每個工具都有 vendor support、可重現 build 與完整企業治理。
  • 只需要分析單一檔案,卻不想承擔整套路由、bootstrap 與 journal 維護成本。

研究後的個人結論

Reverse-skill 最值得研究的地方,不是模組數量,而是它嘗試把資安 Agent 的幾個薄弱環節做成明確介面:單一 routing source、授權 scope、按需工具索引、Evidence chain 與 case review。這些概念比讓模型背更多工具名稱更接近真正的工程治理。

它同時是一套高信任、高權限的 instruction package。文件不只告訴你怎麼用,還要求 Agent 立即執行本機腳本、準備工具並持續完成任務。Scope gate 與 supply-chain check 是重要防線,但不能自己證明整條執行鏈安全,也不能替代外部 sandbox 和法律授權。

我會把它定位成「值得在隔離 Lab 驗證的資安工作流路由包」,不是把 AI 變成自動駭客的魔法工具。新手真正應先學會的是:怎麼固定範圍、保存證據、標示不確定性,以及在沒有授權時停下來。工具選得再漂亮,這四件事沒做好,分析結果仍然不可靠,操作也可能越界。

參考資料