前言
把 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-granted、offline-sample、ctf-public 與 own-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 要求把輸出拆成:
- Evidence:可保存、可 hash、可定位的觀察,例如檔案、封包、函式、位址或 tool output。
- Finding:證據支持的判斷,附信心與限制。
- 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,更保守的順序應該是:
- 固定 commit,不直接信任持續變動的
main;目前 v1.0.1 release 與研究快照已有大量 commit 差距。 - 先由人閱讀
README_AI.md、RULES.md、router、case-init、bootstrap manifest 與實際 script。 - 第一輪只在無憑證、預設斷網的 VM 跑純 router 與 dummy offline case;先不要 refresh、bootstrap 或註冊 MCP。
- 確定要用某個 capability 後,逐一審核它的來源、版本、hash、license 與安裝副作用。
- Tool refresh 會讀 PATH、應用程式路徑,以及 Claude/Codex MCP config;只在低權限測試帳號執行。
- 關閉自動 MCP global registration,僅對明確 client opt-in。
- 檢查會寫入哪些
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.md、CLAUDE.md或SKILL.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.md、RULES.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_gate 與 privacy_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」:
- 建立全新的 VM,不放 SSH key、production
.env或個人 browser profile,預設封鎖 outbound。 - 固定 repository 到本文研究的 commit,先讀
README_AI.md、Master Skill、router、case-init 與 case-guard。 - 不執行 tool refresh、bootstrap、
--start-services或--mcp-host;避免讀取個人 MCP config,也不下載第三方工具。 - 在另一個空白目錄,以
master-route.sh --hint "offline APK reverse with jadx"產生 route。 - 自建內容只有
not a real APK的dummy.apk,再以case-init.sh --preset offline-sample --sample <dummy path>建立 case。 - 執行
case-guard.sh,人工確認scope.md的 network profile 是 offline、asset 只有 dummy path、ready_for_act=true。 - 檢查 timeline、workitems 與 report 目錄後停止;不要真的分析 APK、連目標、回寫 field journal 或 commit
work/。 - 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 變成自動駭客的魔法工具。新手真正應先學會的是:怎麼固定範圍、保存證據、標示不確定性,以及在沒有授權時停下來。工具選得再漂亮,這四件事沒做好,分析結果仍然不可靠,操作也可能越界。
參考資料
- zhaoxuya520/reverse-skill
- 固定研究快照
- README:定位、架構、安裝與測試
- README_AI:Agent bootstrap 與平台流程
- RULES:行為鏈、Scope 與執行規則
- Master Skill
- Master Routing
- Routing Single Source of Truth
- Scope Contract
- Evidence → Finding → Path
- Skill Supply Chain
- Bootstrap Manifest
- Routing Regression Script
- Routing Coherence Verification
- MIT License
