Files

264 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 组件溯源清单 (PROVENANCE)
> 回答一个问题:**每个 Skill / MCP 由哪些文件夹组成,依赖什么,装到哪。**
> 用于理解"为什么不能只复制一个配置文件"。
---
## 一、核心原则
> **Skill / MCP 不是单个文件,而是「配置 + 文件夹」的组合。**
> 只复制配置,目标机器必然跑不起来。
| 类别 | 由什么组成 |
| :--- | :--- |
| **Skill** | 一个目录(`SKILL.md` + `references/` + `scripts/` + `evals/` + `evidence/`) |
| **MCP** | 一个启动脚本 + 它读取的**外部数据目录** + 依赖的**外部工具** |
| **提示词** | `SYSTEM.md` / `AGENTS.md` + `extensions/*.ts` |
---
## 二、Skill 溯源(9 个)
| # | Skill | 本包位置 | 安装目标 | 文件数 | 体积 |
| :--- | :--- | :--- | :--- | :---: | :--- |
| 1 | **softseep** ⭐总控 | `Tool/skill/softseep/` | `~/.pi/agent/skills/softseep/` | 9 | 364 KB |
| 2 | **apkseep** | `Tool/skill/apkseep/` | `~/.pi/agent/skills/apkseep/` | 115 | 2.2 MB |
| 3 | **ida-reverse** | `Tool/skill/ida-reverse/` | `~/.pi/agent/skills/ida-reverse/` | 1 | 4 KB |
| 4 | **client-license-validation-bypass** | `Tool/skill/client-license-validation-bypass/` | `~/.pi/agent/skills/` | 1 | 32 KB |
| 5 | **reverse-engineering** | `Tool/skill/safe-skills/reverse-engineering/` | 同上 | 15 | 380 KB |
| 6 | **apk-reverse** | `Tool/skill/safe-skills/apk-reverse/` | 同上 | 8 | 52 KB |
| 7 | **radare2** | `Tool/skill/safe-skills/radare2/` | 同上 | 3 | 20 KB |
| 8 | **mcp-js-reverse-playbook** | `Tool/skill/safe-skills/mcp-js-reverse-playbook/` | 同上 | 13 | 24 KB |
| 9 | **ida-reverse**(safe 版) | `Tool/skill/safe-skills/ida-reverse/` | 同上 | 3 | 28 KB |
### ⚠ apkseep 的上游归属(合规声明)
**`apkseep` 衍生自开源项目,已按 MIT 许可保留署名。**
| 项 | 值 |
| :--- | :--- |
| **上游仓库** | https://github.com/newliver666/apk-reverse |
| **许可** | MIT License — Copyright (c) 2026 apk-reverse contributors |
| **本包位置** | `Tool/upstream/apk-reverse/`(178 文件 / 3.1 MB) |
| **归属声明位置** | `apkseep/SKILL.md` frontmatter 内(`ATTRIBUTION` 注释块) |
**上游比 apkseep 多出的部分**(apkseep 是精简衍生版):
| 上游独有 | 本包位置 | 价值 |
| :--- | :--- | :--- |
| `docs/tool-verification/`(**26 文件**) | `Tool/upstream/apk-reverse/docs/tool-verification/` | ⭐ 自审证据记录:逐脚本 `TOOL-VERDICTS`、`FINDINGS`(含推翻自己的结论)、20+ `EXTENSION-*` 实测记录 |
| `tests/`(**24 文件**) | `Tool/upstream/apk-reverse/tests/` | ⭐ stdlib 离线测试套件(unit/cli/integration),**无需设备与网络** |
| `tests/benchmark.md` | 同上 | B1–B13 公开靶场矩阵(含负面结果) |
| `capabilities.py` | `Tool/upstream/apk-reverse/skills/apk-reverse/scripts/` | 能力自检(G2 门依赖) |
| `check_routing.py` 等 5 个 | `Tool/upstream/apk-reverse/` | 一致性检查(CI 跑) |
| `skills/apk-reverse/`(114 文件) | `Tool/upstream/apk-reverse/skills/apk-reverse/` | 上游原版,可与 apkseep 对照 |
> **为什么入包**:apkseep 的 `SKILL.md` 声称的“四大硬性质量门禁(G1-G4)”与“离线测试套件”,
> 其**证据**在上游的 `tests/` 与 `docs/tool-verification/` 里。不入包,实习生就无法验证
> 这些声明是否成立。
> **运行测试**(可选):`cd Tool/upstream/apk-reverse && python -m pytest -q`
> (需先 `pip install pytest`;不连设备、不联网)
### softseep 内部构成(总控 + 按需加载的 references)
```
softseep/
├── SKILL.md ← 总控(253 行):G-Auth 门 + 自动判型 + 路由矩阵
└── references/ ← 按需加载,不预先全读
├── windows-sop.md 6 步标准化流水线
├── patching-dictionary.md 汇编打桩速查字典
├── defense-in-depth.md 五层纵深防御
├── ui-verification.md 跨进程 UI 验收工装
├── compiler-pitfalls.md 编译器陷阱(写代理 DLL 前必读)
├── project-paradigms.md 九型范式库(项目A~I 的技术内核)
├── license-validation.md 许可/激活/卡密校验手册(16 节)
└── tooling.md 工具脚本索引
```
### apkseep 内部构成(渐进式披露)
```
apkseep/
├── SKILL.md (432 行)
├── references/ 45 个(symptom index / gates / 13 问分类 …)
├── scripts/ 56 个(dex_patch_bytes / dex_mem_scan / doctor …)
├── evals/ (评测用例)
└── evidence/ (能力矩阵与已知限制)
```
---
## 三、MCP 溯源(3 个默认注册)
> 📖 **完整的 MCP 配置、验证与排障** → 见 **`Tool/docs/MCP-SETUP.md`**
> 本节只讲“由哪些文件夹组成”。
> 📦 **各工具下载来源** → 见 **`Tool/docs/DOWNLOADS.md`**
### ① seep MCP(22 工具)— 自研
| 组成 | 位置 | 说明 |
| :--- | :--- | :--- |
| **启动脚本** | `Tool/mcp/seep_mcp_server.py` | 42 KB,主程序 |
| **自检脚本** | `Tool/mcp/test_seep_mcp.py` | 9 个测试套件 |
| **启动器** | `Tool/mcp/run_seep_mcp.bat` | Windows 启动封装 |
| **⭐ 运行时根目录** | **`Tool/mcp/Tool/`** | MCP 内部硬编码 `TOOL_DIR = <脚本目录>/Tool` |
| **⭐ 知识库依赖** | `Tool/mcp/Tool/reverselab/kb/`(**289 篇 .md**) | `seep_kb_search` 等 4 个工具读这里 |
| **LLM 索引** | `Tool/mcp/Tool/reverselab/docs/llms.txt` | MCP 启动时读取 |
| **外部工具依赖** | `Tool/mcp/Tool/safe/radare2/bin/`(脚本下载) | `seep_r2_*` 8 个工具 |
| **外部工具依赖** | `Tool/mcp/Tool/safe/jadx/bin/` + `.../apktool/`(脚本下载) | `seep_apk_*` 5 个工具 |
| **Hook 模板** | `Tool/mcp/Tool/safe/hook-mcp/templates/` | `seep_apk_gen_hook` |
> **关键(排障必读)**:`seep_mcp_server.py` 第 28–44 行硬编码:
> ```python
> BASE_DIR = os.path.dirname(os.path.abspath(__file__)) # = Tool/mcp/
> TOOL_DIR = os.path.join(BASE_DIR, "Tool") # = Tool/mcp/Tool/
> SAFE_DIR = os.path.join(TOOL_DIR, "safe") # = Tool/mcp/Tool/safe/
> R2_BIN_DIR = os.path.join(SAFE_DIR, "radare2", "bin")
> KB_DIR = os.path.join(TOOL_DIR, "reverselab", "kb")
> ```
> **所以 `Tool/` 必须与 `seep_mcp_server.py` 同级,不能搬动。**
**工具分组**:
```
状态环境(2) seep_status · seep_ida_status
二进制 r2(8) seep_r2_info · _cmd · _strings · _functions · _disasm · _decompile · _diff · _asm
Android(5) seep_apk_info · _decompile · _unpack · _smali_search · _gen_hook
知识库(4) seep_kb_search · _read · _checklist · _payloads
流程编排(3) seep_task_init · seep_auto_triage · seep_gen_security_report
```
### ② ida MCP(~243 工具)
| 组成 | 位置 | 说明 |
| :--- | :--- | :--- |
| **MCP 服务** | `tools/ida-pro-mcp/`(脚本下载) | `server.py` + 插件 |
| **⭐ 宿主依赖** | **你自备的 IDA Pro** | 商业授权,**不随包分发** |
| **Python 运行时** | IDA 内置的 `python311` | 由 `install-pi.ps1` 探测 |
> 没有 IDA Pro 时,该 MCP 不可用;用 `seep_r2_*` + Ghidra 替代(见 `MANUAL/IDA-PRO.md`)。
### ③ playwright MCP
| 组成 | 位置 | 说明 |
| :--- | :--- | :--- |
| **MCP 服务** | npm `@playwright/mcp` | `npx` 按需拉取 |
| **扩展 token** | `mcp.json` 中 `PLAYWRIGHT_MCP_EXTENSION_TOKEN` | **需你自填** |
### 可选注册:reverselab 自带的 3 个 MCP
源码在 `Tool/mcp/Tool/reverselab/tools/skills/mcp/`,**默认不注册**,需要时手动加入 `mcp.json`:
| MCP | 位置 | 用途 |
| :--- | :--- | :--- |
| **ReverseLabToolsMCP** | `Tool/mcp/Tool/reverselab/tools/skills/mcp/ReverseLabToolsMCP/` | reverselab 主 MCP(150+ 工具) |
| **JSHookLocal** | `Tool/mcp/Tool/reverselab/tools/skills/mcp/JSHookLocal/` | JS Hook 本地服务 |
| **GhidraMCP** | `Tool/mcp/Tool/reverselab/tools/skills/mcp/GhidraMCP/` | Ghidra 桥接 |
---
## 四、提示词与扩展溯源
| 文件 | 本包位置 | 安装目标 | 作用 |
| :--- | :--- | :--- | :--- |
| **SYSTEM.md** | `Tool/prompts/SYSTEM.md` | `~/.pi/agent/SYSTEM.md` | 主提示词:人格 + **lab 开关协议** + 思维重定向 + 反退缩十项 + 提效规则 |
| **AGENTS.md** | `Tool/prompts/AGENTS.md` | `~/.pi/agent/AGENTS.md` | 跨 agent 通用版(Codex / Claude Code / OpenCode) |
| **security-audit-interceptor.ts** | `Tool/prompts/extensions/` | `~/.pi/agent/extensions/` | 底座 BLOCK_NONE 注入 + **lab 标志文件门控** + 快捷口令 + 敏感词替换 |
| **load-system-prompt.ts** | `Tool/prompts/extensions/` | `~/.pi/agent/extensions/` | 加载自定义提示词 |
### lab 模式状态文件
| 项 | 值 |
| :--- | :--- |
| 路径 | `~/.pi/agent/lab-mode.flag` |
| 写入时机 | 输入 `lab:` |
| 删除时机 | 输入 `退出实验` |
| 作用 | 扩展每次读此文件决定是否启用敏感词替换;**状态在磁盘,切模型/长上下文都不丢** |
---
## 五、知识库溯源
| 组成 | 本包位置 | 说明 |
| :--- | :--- | :--- |
| **kb/** | `Tool/mcp/Tool/reverselab/kb/` | **289 篇 .md**(ctf-website / apk-reverse / pe-reverse / general) |
| **boards/** | `Tool/mcp/Tool/reverselab/boards/` | 攻击网(按信号路由到技术文件) |
| **tools/skills/mcp/** | `Tool/mcp/Tool/reverselab/tools/skills/mcp/` | 3 个 MCP 源码 |
| **docs/** | `Tool/mcp/Tool/reverselab/docs/` | 含 `llms.txt`(seep MCP 引用的 LLM 索引) |
| **scripts/** | `Tool/mcp/Tool/reverselab/scripts/` | 知识库辅助脚本 |
| **AGENTS.md / CLAUDE.md / SKILLS.md / AI-USAGE.md** | `Tool/mcp/Tool/reverselab/` | reverselab 自带的 agent 协议 |
> 已剔除工作目录:`cases/ logs/ tmp/ exports/ samples/ projects/ patches/ reports/ notes/ site/`
---
## 六、脚本溯源
| 脚本 | 本包位置 | 作用 |
| :--- | :--- | :--- |
| `case-init.ps1` | `Tool/scripts/` | 任务建档门禁(一任务一目录) |
| `refresh-tool-index.ps1` | `Tool/scripts/` | 工具链健康自检 |
| `trigger_ida_mcp.ps1` | `Tool/scripts/` | 静默唤醒 IDA + 挂 MCP |
| `master-route.ps1` | `Tool/scripts/` | 主路由 |
| `start_mcp.py` | `Tool/scripts/` | MCP 启动 |
| `shot_ida.ps1` / `temp_ocr.ps1` | `Tool/scripts/` | 截图 / OCR 辅助 |
| `apk/decode.ps1` | `Tool/scripts/apk/` | jadx + apktool 一键解包 |
| `apk/rebuild-sign-install.ps1` | `Tool/scripts/apk/` | 重打包 → 对齐 → 签名 → 装机 |
| `apk/frida-run.ps1` | `Tool/scripts/apk/` | 设备枚举 + Spawn/Attach 注入 |
| `apk/manifest-summary.ps1` | `Tool/scripts/apk/` | Manifest 摘要 |
(`.sh` 版为 macOS/Linux 等价脚本)
---
## 七、外部工具依赖(脚本下载,不在包内)
> 下载目标统一为 **`Tool/mcp/Tool/safe/`**(MCP 硬编码要求)。
| 工具 | 服务的 MCP / Skill | 下载目标 | 体积 |
| :--- | :--- | :--- | :--- |
| **radare2** | `seep_r2_*`(8 工具) | `Tool/mcp/Tool/safe/radare2/` | ~39 MB |
| **jadx** | `seep_apk_decompile` | `Tool/mcp/Tool/safe/jadx/` | ~460 MB |
| **apktool** | `seep_apk_unpack` | `Tool/mcp/Tool/safe/apktool/` | ~24 MB |
| **playwright-mcp** | playwright MCP | `Tool/mcp/Tool/safe/playwright-mcp/` | ~45 MB |
| **js-reverse-mcp** | js-reverse-mcp MCP | `Tool/mcp/Tool/safe/js-reverse-mcp/` | ~234 MB |
| **ida-pro-mcp** | ida MCP | `Tool/mcp/Tool/safe/ida-pro-mcp/` | ~79 MB |
---
## 八、依赖链速查(排障用)
```
seep_kb_* 四个工具 → Tool/mcp/Tool/reverselab/kb/(289 篇)
seep_r2_* 八个工具 → Tool/mcp/Tool/safe/radare2/bin/
seep_apk_* 五个工具 → Tool/mcp/Tool/safe/jadx/ + apktool/
seep_apk_gen_hook → Tool/mcp/Tool/safe/hook-mcp/templates/
ida MCP → 自备 IDA Pro + Tool/mcp/Tool/safe/ida-pro-mcp/
playwright MCP → npx + PLAYWRIGHT_MCP_EXTENSION_TOKEN
softseep 路由 → Tool/skill/softseep/(含 8 个 references)
apkseep 全链路 → Tool/skill/apkseep/(45 refs + 56 scripts)
```
**排障口诀**:某个 MCP 工具报错 → 先看它读哪个目录 → 检查该目录是否存在且非空。
**特别注意**:`Tool/mcp/Tool/` 不可搬动 —— MCP 内部硬编码了 `TOOL_DIR = <脚本目录>/Tool`。
---
## 九、案例层溯源(项目A~I)
| 案例 | 源(脱敏前) | 范式类型 |
| :--- | :--- | :--- |
| 项目A | 单进程经典工具 | 单进程纯离线 |
| 项目B | 多进程模拟器 | 多进程混合 |
| 项目C | 压缩工具商业套件 | 资源模板 + 显示层伪造 |
| 项目D | 下载工具 | 壳保护 + 多策略 |
| 项目E | 卸载工具 | VM + 在线 → patch |
| 项目F | 搜索工具 | .NET 混淆 → Keygen |
| 项目G | 播放工具 | 自引用校验 → 补判定点 |
| 项目H | 截图工具 | 公钥替换 Keygen |
| 项目I | 开始菜单工具 | RSA 弱模 → 验签入口 |
**脱敏范围**:产品名 / 公司名 / 同厂兄弟产品 / 哈希 / 绝对路径 / 版本号 / 厂商域名 → 全部替换。
**保留**:RVA / 文件偏移 / 原始字节 / 补丁字节 / 汇编指令 / 算法常量 / CWE 编号 / 工具名。