reverse-skills-max: initial public release (restored, redacted, hardened)
This commit is contained in:
@@ -0,0 +1,246 @@
|
||||
# 设计:逆向工程技能库(aihk)
|
||||
|
||||
日期:2026-08-07
|
||||
状态:已批准
|
||||
|
||||
## 1. 背景与目标
|
||||
|
||||
构建一个**通用、可发布**的逆向工程 AI 技能库,存放于 `/home/DslsDZC/aihk` 仓库。
|
||||
|
||||
- **场景覆盖**:恶意软件分析、CTF 逆向、固件/嵌入式、软件破解/脱壳、协议逆向、移动应用逆向(全部方向)
|
||||
- **平台覆盖**:Windows PE、Linux ELF、macOS Mach-O、固件/嵌入式多架构、Android/iOS
|
||||
- **通用性要求**:技能不能假设用户已安装任何工具——每个技能必须含跨 OS 安装指引
|
||||
- **发布形式**:GitHub 仓库直发 + npm(`npx` 安装器)+ Claude Code 插件市场(三者兼顾)
|
||||
- **多工具适配**:Claude Code、Gemini CLI、Cline、Codex CLI(原生 SKILL.md);Cursor、GitHub Copilot、Windsurf(规则文件转换)
|
||||
|
||||
## 2. 架构:三层技能体系
|
||||
|
||||
### 2.1 第 1 层 — 入口(1 个)
|
||||
|
||||
`re-analyze`:唯一分析入口。流程:**环境探测 → 偏好询问 → 任务识别 → 编排分派**。
|
||||
|
||||
**① 环境探测(自动,`references/probe.sh`)**:
|
||||
|
||||
- **OS 平台**:Linux / macOS / Windows / WSL(`uname -s` + WSL 检测)——决定后续一切工具选择与平台经验分支
|
||||
- **硬件**:CPU 架构(`uname -m`)、核心数(`nproc`)、内存总量(`free -g`)——用于评估工具可行性(Ghidra 建议 ≥4GB 可用内存;angr 符号执行吃内存;QEMU 仿真按架构选内核)
|
||||
- **已装逆向工具**:`which` 探测 ghidra / ida / radare2 / gdb / frida / binwalk / qemu / jadx / angr / z3 等清单——**仅作可选优化**:探测到已装工具则优先使用;**默认假设空白环境(用户机器无任何已装工具)**,未探测到工具时按对应技能的「工具准备」章节引导安装,绝不因"没装"而卡住流程
|
||||
- 探测失败(如 Windows 无 `uname/free`)→ 退化为向用户询问硬件情况
|
||||
|
||||
**② 偏好询问(用户选择,问题集在 `references/preferences.md`)**:
|
||||
|
||||
| 问题 | 选项 | 说明 |
|
||||
|---|---|---|
|
||||
| **分析目标** | 用户自然语言描述 | **必答、第一项**:想达成什么(判定恶意行为 / 脱壳拿干净样本 / 找密钥或注册码 / 还原算法 / 确认漏洞 / 提取配置……)——决定整个编排路径与产出形态 |
|
||||
| 反编译器选择 | IDA / Ghidra / radare2 / **自动推荐** | 推荐依据:免费 vs 商业、平台支持、内存可行性——**不是已装哪个**(通用场景默认没装任何工具) |
|
||||
| 分析深度 | 快速结论 / 标准分析 / 深度报告 | 决定走哪条流程路径与产出规模 |
|
||||
| 输出报告 | 要 / 不要 | 决定是否走报告流程(IOC/YARA 等) |
|
||||
| 平台确认 | 自动识别 / 手动指定 | 文件存在时自动识别为主 |
|
||||
|
||||
询问顺序:**目标描述优先**(第一问),其后是反编译器、深度、报告、平台确认。目标决定 `triage.md` 决策表选择哪条编排路径;目标不明确时,入口追问直到可执行(如"想确认这个样本会不会回连"→ 编排:沙箱 → 行为 → netcap → 报告)。
|
||||
|
||||
**反编译器选择依据**(写入 `references/preferences.md`,不依赖已装工具):
|
||||
|
||||
- **Ghidra**:免费开源、跨平台(Win/Linux/macOS)、Linux 最顺——**通用场景默认推荐**
|
||||
- **IDA**:商业付费(有 7.x 免费版)、Windows 生态最强、插件丰富——用户明确选或目标为 Windows 闭源软件时推荐
|
||||
- **radare2/rizin**:命令行轻量、终端友好、脚本化强——内存紧张或 CLI 工作流时推荐
|
||||
- 内存 <4GB → 提示 Ghidra 可能吃力,建议轻量工具(radare2)或先加内存
|
||||
|
||||
偏好询问**一次完成**,结果存入会话变量,贯穿本次分析全程——被调用的子技能读取该状态(如用户选 Ghidra → 所有反编译步骤直接走 `re-ghidra` 工作流;未装该工具 → 先执行其「工具准备」安装步骤)。
|
||||
|
||||
**③ 任务识别与编排**:根据输入(文件路径 / 描述 / 请求)判断任务类型,查 `references/triage.md` 决策表,编排调用大类网关。复合任务(命中多个大类)按依赖顺序串联。
|
||||
|
||||
### 2.2 第 2 层 — 大类网关(8 个,独立)
|
||||
|
||||
按学科划分,**互不合并**;大类之间的联合通过跨网关引用(`[[链接]]`)实现。
|
||||
|
||||
| 网关 | 学科 | 核心职责 |
|
||||
|---|---|---|
|
||||
| `re-binary-core` | 软件逆向核心 | 公共底座:格式、反编译、调试器、静态/动态通用技术 |
|
||||
| `re-malware` | 恶意软件分析 | 沙箱、行为分析、IOC/YARA、报告(`re-sandbox` 为动态分析强制前置) |
|
||||
| `re-firmware` | 固件/嵌入式/硬件 | 固件提取、rootfs、QEMU 仿真、JTAG/UART |
|
||||
| `re-protocol` | 协议逆向 | 流量捕获、状态机重建、加密识别/密钥/解密 |
|
||||
| `re-mobile` | 移动应用 | APK、iOS、Frida |
|
||||
| `re-anti-analysis` | 反分析对抗 | 壳识别、脱壳(简单/高级)、反混淆 |
|
||||
| `re-cracking` | 软件破解 | 授权逻辑、补丁、注册机 |
|
||||
| `re-ctf` | CTF 实践 | angr、Z3 |
|
||||
| `re-managed` | 托管代码/字节码 | .NET CIL、Java 字节码、脚本/宏去混淆、WASM |
|
||||
| `re-forensics` | 取证/威胁情报 | 内存取证(Volatility 3)、威胁情报查询(VT/沙箱/MISP) |
|
||||
| `re-vuln` | 漏洞挖掘 | 覆盖率引导 fuzzing、崩溃分析/漏洞定位 |
|
||||
|
||||
每个网关 SKILL.md 必含三部分:**该大类完整工作流**、**何时用哪个原子技能(选择树)**、**跨域联合章节**。
|
||||
|
||||
### 2.3 第 3 层 — 原子技能(37 个)
|
||||
|
||||
| 大类 | 原子技能 |
|
||||
|---|---|
|
||||
| `re-binary-core` | `re-triage`、`re-format-pe`、`re-format-elf`、`re-format-macho`、`re-imports`、`re-ghidra`、`re-ida`、`re-radare2`、`re-gdb`、`re-x64dbg`、`re-lldb`、`re-tracing`、`re-memdump`、`re-windbg`、`re-binaryninja`、`re-emulation`、`re-kernel`、`re-game`、`re-go`、`re-rust`、`re-plugin-dev`、`re-shellcode`、`re-hypervisor`、`re-anti-cheat` |
|
||||
| `re-malware` | `re-sandbox`、`re-behavior`、`re-ioc`、`re-ransomware`、`re-loader`、`re-fileless` |
|
||||
| `re-firmware` | `re-fw-extract`、`re-fw-rootfs`、`re-fw-emulate`、`re-hardware-io`、`re-uefi` |
|
||||
| `re-protocol` | `re-netcap`、`re-proto-rev`、`re-crypto-id`、`re-crypto-keys`、`re-crypto-decrypt`、`re-iot-proto`、`re-whitebox`、`re-tls` |
|
||||
| `re-mobile` | `re-apk`、`re-ios`、`re-frida`、`re-mobile-pack`、`re-hybrid-app`、`re-android-native`、`re-ios-jb` |
|
||||
| `re-anti-analysis` | `re-packer-id`、`re-unpack-simple`、`re-unpack-advanced`、`re-deobfuscate`、`re-evasion` |
|
||||
| `re-cracking` | `re-license`、`re-patching`、`re-keygen`、`re-drm` |
|
||||
| `re-ctf` | `re-angr`、`re-z3`、`re-pwn` |
|
||||
| `re-managed` | `re-dotnet`、`re-java`、`re-script-deob`、`re-wasm`、`re-ai-model`、`re-blockchain` |
|
||||
| `re-forensics` | `re-mem-forensics`、`re-ti`、`re-disk-forensics` |
|
||||
| `re-vuln` | `re-fuzzing`、`re-crash-triage`、`re-exploit` |
|
||||
|
||||
总数:**1 入口 + 11 网关 + 76 原子 = 88 技能**。
|
||||
|
||||
### 2.4 跨大类引用机制
|
||||
|
||||
大类独立、任务联合。已知联合场景(写进各网关的「跨域联合」章节):
|
||||
|
||||
| 联合场景 | 主大类 → 引用 |
|
||||
|---|---|
|
||||
| 恶意样本加壳 | `re-malware` → `re-anti-analysis`(packer-id / unpack-*) |
|
||||
| C2 通信分析 | `re-malware` → `re-protocol`(netcap / proto-rev / crypto-*) |
|
||||
| 破解先脱壳 | `re-cracking` → `re-anti-analysis` |
|
||||
| 移动 App 含原生库 | `re-mobile` → `re-binary-core`(format-elf / ghidra) |
|
||||
| 固件通信协议 | `re-firmware` → `re-protocol` |
|
||||
| CTF 题 = 核心技能应用 | `re-ctf` → `re-binary-core` |
|
||||
| .NET/Java 恶意样本 | `re-malware` → `re-managed`(dotnet / java) |
|
||||
| 恶意样本内存取证 | `re-malware` → `re-forensics`(mem-forensics) |
|
||||
| 内核驱动/rootkit 样本 | `re-malware` → `re-kernel` |
|
||||
| 威胁情报关联 | `re-malware` → `re-forensics`(ti) |
|
||||
| 游戏破解 | `re-cracking` → `re-game` |
|
||||
| 崩溃样本定位 | `re-vuln` → `re-binary-core`(triage/ghidra 定位)+ `re-memdump`(core 分析) |
|
||||
| CTF pwn 题 | `re-ctf` → `re-vuln`(fuzzing/crash-triage) |
|
||||
| 工控协议分析 | `re-protocol` → `re-ics` |
|
||||
| 车载/ECU 固件 | `re-firmware` → `re-automotive` |
|
||||
|
||||
落地方式:
|
||||
1. 每个网关 SKILL.md 含「跨域联合」章节,声明引用场景与顺序(引用即 `[[链接]]`,被引用技能按需加载)
|
||||
2. `re-analyze/references/triage.md` 决策表处理复合任务编排(如"脱壳 → 静态 → 动态 → C2 协议 → 报告")
|
||||
|
||||
## 2.5 平台经验知识库(`re-analyze/references/platform-tips.md`)
|
||||
|
||||
每个技能的工具准备与操作步骤按 **OS 分支**给出方案;跨大类共享的平台经验沉淀在入口的 `platform-tips.md`,被所有技能引用。初始内容(实战经验,后续扩充):
|
||||
|
||||
| 平台 | 场景 | 经验方案 |
|
||||
|---|---|---|
|
||||
| **所有平台** | **运行任何样本/动态分析** | **默认沙箱,强制前置**:虚拟机快照 / 容器(Docker、firejail)/ 专用沙箱(Cuckoo/CAPE);网络隔离(INetSim、fake DNS、断网)。样本可能已被污染或含攻击行为——**静态分析可免沙箱,一切动态执行默认在沙箱内**,分析结束后恢复快照。此原则优先于本表所有其他条目 |
|
||||
| **Linux** | 分析 Windows PE 程序 | **Wine 直读进程内存**:wine 运行 PE → `gdb attach` 或读 `/proc/<pid>/mem`——**无需整机虚拟化**;脱壳/读内存直接对 Wine 进程操作。比 QEMU 全套虚拟化轻一个量级 |
|
||||
| **Linux** | 跑非本机架构程序 | QEMU 用户态仿真(`qemu-<arch>`)优先,全系统仿真仅必要时用 |
|
||||
| **Linux** | **内存转储的极端段** | `[vsyscall]`(固定地址 `0xffffffffff600000`,只执行 `--xp`)、`[vdso]`/`[vvar]`:`/proc/<pid>/mem` 读取会失败,gdb 访问报错属正常。**转储前必须按 `/proc/<pid>/maps` 过滤这些段**(只 dump `r--p`/`rw-p` 可读映射),否则 dump 含垃圾页、脱壳/分析全被污染。识别特征:`maps` 中 `[vsyscall]`/`[vdso]`/`[vvar]` 名称、地址落在 `0xffffffffff6xxxxx` 高段、无文件路径的匿名 `00:00` 映射 |
|
||||
| **Windows** | 读目标进程内存 | 需装 Sysinternals 套件(`procdump`)/ `DumpIt` 做内存转储 + Volatility 分析;attach 需要管理员权限 |
|
||||
| **macOS** | attach/调试 | SIP 与 TCC 限制:调试工具需授权(Developer Tools 权限),`lldb` attach 前检查 |
|
||||
| **WSL** | 分析 Windows 侧目标 | WSL 无法直接 attach Windows 进程——跨边界的分析走 Windows 侧工具,WSL 内只做文件/静态分析 |
|
||||
|
||||
原则:**先给最轻的可行方案**(Wine 直读 > 用户态仿真 > 全系统虚拟化 > 物理机),按平台经验分支执行。
|
||||
|
||||
**「直读 vs 转储」决策**(`re-memdump` 等技能引用,依据实战与社区共识):
|
||||
|
||||
**默认策略:转储优先。** 一次转储获得完整内存布局 + 寄存器/线程状态(ELF notes),可导入 Ghidra/IDA、可存档复现;后续所有定向提取(密钥搜索、脱壳段、DEX 挖掘)都从转储产物里做,进程状态被冻结后反复分析也不受干扰。
|
||||
|
||||
| 场景 | 方案 |
|
||||
|---|---|
|
||||
| **默认(任何需要读内存的任务)** | **转储** `gcore` → ELF core 文件;取证/存档场景用全量转储 + 映射清单(manifest) |
|
||||
| 需要完整内存布局 + 寄存器/线程状态(导入 Ghidra/IDA、事后复现分析) | **转储** `gcore` → ELF core 文件(含 ELF notes) |
|
||||
| 进程已死 | 直接分析已有 core 文件(`kernel.core_pattern` / systemd-coredump / 容器 runtime dump) |
|
||||
| ptrace 被禁 / 沙箱容器 / attach 失败 | **转储兜底**:core 文件不需要 `/proc/<pid>/mem` 权限路径 |
|
||||
| 特例①:进程必须保持运行、实时交互调试 | **直读** `/proc/<pid>/mem`:先读 `/proc/<pid>/maps` 确定有效地址范围 → SIGSTOP 暂停进程防竞态 → chunked `pread` 只取目标区段 |
|
||||
| 特例②:只需极小特定区段且性能敏感(在线检查某地址) | **直读** 单区段,同上流程 |
|
||||
|
||||
关键经验:**转储时机**——脱壳须等进程运行到 OEP 完全解密后再 dump,否则转的是壳的初始状态;直读前必须先查 maps(无脑 open `/proc/<pid>/mem` 必然报错);dump 前过滤 `[vsyscall]`/`[vdso]` 等特殊段(见上表)。
|
||||
|
||||
## 3. 技能统一模板
|
||||
|
||||
### 3.1 原子技能模板
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: re-xxx
|
||||
description: > 中英双语触发词 + 何时使用
|
||||
---
|
||||
|
||||
# 技能名
|
||||
|
||||
## 何时使用 / 何时不用 ← 明确边界,避免误触发
|
||||
## 工具准备 ← 必含:每工具 apt/dnf/pacman/brew/pip/cargo/choco
|
||||
← 安装命令 + 验证命令
|
||||
← 按 OS 分支:Linux/macOS/Windows/WSL 各自的方案与替代工具
|
||||
← 优先引用 platform-tips.md 的平台经验
|
||||
## 操作步骤 ← 可执行、具体(沿用 porting-minecraft-mod 的硬性执行风格)
|
||||
## 跨域联合 ← 本技能在哪些复合任务中被其他大类引用
|
||||
## 常见坑与陷阱
|
||||
```
|
||||
|
||||
### 3.2 多工具兼容约束(保证转换无损)
|
||||
|
||||
- 正文纯 Markdown,不依赖任何工具私有语法
|
||||
- frontmatter 标准 YAML,description 中英双语触发词
|
||||
- 技能保持原子粒度 → 转换聚合后才有结构
|
||||
|
||||
## 4. 发布与安装机制
|
||||
|
||||
### 4.1 仓库结构
|
||||
|
||||
```
|
||||
aihk/
|
||||
├── AGENTS.md # 跨工具通用入口(Claude/Codex/Gemini/Cursor/Zed 都读)
|
||||
├── README.md # 三种安装方式 + 多工具适配说明 + 技能目录导航
|
||||
├── LICENSE # MIT
|
||||
├── package.json # npm 包 re-skills,bin: re-skills → bin/install.mjs
|
||||
├── bin/install.mjs # 安装器(--target 多工具)
|
||||
├── bin/convert.mjs # 转换器:SKILL.md → Cursor/Copilot/Windsurf 规则格式
|
||||
├── .claude-plugin/marketplace.json # claude plugin add 支持
|
||||
├── .claude/skills/ # 46 个技能(标准结构)
|
||||
│ └── re-analyze/
|
||||
│ ├── SKILL.md # 入口:环境探测 → 偏好询问 → 任务识别 → 编排
|
||||
│ ├── references/probe.sh # OS/硬件与工具自动探测脚本
|
||||
│ ├── references/preferences.md# 偏好问题集与默认值
|
||||
│ ├── references/platform-tips.md # 平台经验知识库(Wine 直读/内存转储等)
|
||||
│ └── references/triage.md # 任务类型判定决策表
|
||||
└── tests/validate.mjs # 结构冒烟测试
|
||||
```
|
||||
|
||||
### 4.2 安装器 --target 矩阵
|
||||
|
||||
| target | 安装位置 | 方式 |
|
||||
|---|---|---|
|
||||
| `claude` | `~/.claude/skills/` 或项目 `.claude/skills/` | 原样复制(原生) |
|
||||
| `gemini` | `~/.gemini/skills/` | 原样复制(原生) |
|
||||
| `cline` | 项目 `.claude/skills/` | 原样复制(原生兼容) |
|
||||
| `codex` | `~/.codex/skills/` | 原样复制(原生) |
|
||||
| `cursor` | `.cursor/rules/` | 转换 → `.mdc` |
|
||||
| `copilot` | `.github/copilot-instructions.md` | 转换 → 聚合指令 |
|
||||
| `windsurf` | `.windsurf/rules/` | 转换 → `.md` |
|
||||
| `all` | 以上全部 | 混合 |
|
||||
|
||||
命令形式:`npx re-skills install`(交互)/ `--global` / `--project` / `--target <x>` / `--dry-run` / `uninstall`
|
||||
|
||||
安装器行为:
|
||||
- 复制优先(符号链接在 Windows 需管理员权限;`--link` 可选)
|
||||
- 自动跳过同名冲突技能并提示
|
||||
- 安装后输出验证方法
|
||||
|
||||
### 4.3 兼容性边界(写入 README)
|
||||
|
||||
- **原生技能类**(Claude Code / Gemini CLI / Cline / Codex CLI / Zed):完整技能体验,按需动态加载
|
||||
- **规则文件类**(Cursor / Copilot / Windsurf):获得"知识 + 流程"聚合,无按需加载
|
||||
- 转换产物保证每个工具都能用于实际分析
|
||||
|
||||
### 4.4 转换器原理
|
||||
|
||||
`bin/convert.mjs`:解析 SKILL.md frontmatter + 正文,按目标工具模板生成规则文件——`.mdc` 带 YAML 头(description + globs);Copilot 聚合为单文件纯 Markdown;Windsurf 每技能一文件。
|
||||
|
||||
## 5. 测试与发布验证
|
||||
|
||||
`tests/validate.mjs`(`npm test` 运行)校验:
|
||||
1. 每个技能目录有 `SKILL.md` + 合法 frontmatter(name/description)
|
||||
2. 所有 `[[链接]]` 指向仓库内真实存在的技能(防死链)
|
||||
3. 每个技能含「工具准备」章节(通用性硬性检查)
|
||||
4. 命名规范(`re-` 前缀)
|
||||
|
||||
发布流程:`npm test` 通过 → git tag → npm publish → 同步 marketplace.json 版本。
|
||||
|
||||
## 6. 成功标准
|
||||
|
||||
- 88 个技能全部通过 validate(合法 frontmatter、无死链、含工具准备)
|
||||
- `probe.sh` 能输出 OS 平台 + CPU/内存/已装工具清单(Linux/macOS),Windows 下降级为询问;空白环境(无任何工具)时输出安装引导而非中断
|
||||
- `platform-tips.md` 覆盖 5 个平台分支(Linux/macOS/Windows/WSL/跨平台),被至少 10 个技能引用
|
||||
- `re-analyze` 完整走通"探测 → 偏好 → 识别 → 分派",偏好状态能被子技能读取
|
||||
- `npx re-skills install --target all --dry-run` 输出全部安装计划
|
||||
- 转换器对每种规则类 target 生成产物成功
|
||||
- README 完整覆盖三种安装方式与七种工具适配说明
|
||||
@@ -0,0 +1,73 @@
|
||||
# reverse-skill 经验吸收设计(2026-08-18)
|
||||
|
||||
## 背景
|
||||
|
||||
reverse-skill(zhaoxuya520/reverse-skill,MIT 许可)的 field-journal 含 42 个经验 md(18 真实条目 + 17 seed + 3 precedent + 索引/模板)。经评估:24 个跳过(渗透测试类非逆向域、reverse-skill 自身工程类、已覆盖、索引类),12 个逆向域候选值得吸收。机制层(routing.json/scope 门/自动回流 CI 等)用户确认不做。
|
||||
|
||||
设计约束(沿用全库红线与原则):
|
||||
- **红线 1 呈现中性**:禁用「最推荐」「强烈建议」等最高级强推措辞
|
||||
- **红线 2 隐私脱敏**:吸收条目按脱敏规范泛化(不指向具体项目/公司/产品)
|
||||
- **版权**:reverse-skill 为 MIT 许可——吸收条目注明来源(「来源:reverse-skill field-journal(MIT)」)
|
||||
- **改写**:不逐字复制——按 rev-skills 坑格式(现象/原因/对策)改写
|
||||
- **查重**:入库前对目标技能 grep 去重(如 SSL 绕过——frida-scripts.md 已有模板则跳过或合并)
|
||||
- 工作区已干净,无未提交文件冲突
|
||||
- 当前分支 `main`
|
||||
|
||||
## 变更总览(12 个吸收候选 → 归域)
|
||||
|
||||
| # | 源条目 | 蒸馏主题 | 归域技能 | 吸收形态 |
|
||||
|---|---|---|---|---|
|
||||
| 1 | seed-002 | Go stripped+Garble 对抗(GoReSym/GoResolver/GoStringUngarbler 链、AES 密钥定位) | re-go | 坑 3-4 条 + 工具链方法 |
|
||||
| 2 | 2026-07-14 | Android ARM64 间接跳转表静态求解、XOR 解密器重放 | re-binary-core | 坑 2-3 条 |
|
||||
| 3 | 2026-07-05 | 验证码系统 VM 混淆对抗 | re-deobfuscate | 坑 2-3 条 |
|
||||
| 4 | 2026-08-06 | Cortex-M 固件自旋 XOR 封装(自带掩码旋转) | re-fw-extract | 坑 1-2 条 |
|
||||
| 5 | seed-001 | ELF 自解压加载器(bzip2 尾部流定位、__ARCHIVE_BELOW__ 自解压脚本) | re-loader | 坑 2 条 |
|
||||
| 6 | seed-014 | Unity IL2CPP 元数据还原(global-metadata.dat、方法指针) | re-game | 坑 2-3 条 |
|
||||
| 7 | seed-008 | APK OkHttp SSL Pinning 绕过 | re-frida | 查重(frida-scripts.md 已有 SSL 模板)——命中则跳过 |
|
||||
| 8 | seed-009 | iOS 越狱检测绕过 + 抓包 | re-ios-jb | 坑 2 条 |
|
||||
| 9 | seed-011 | PCAP 自定义二进制协议还原 | re-proto-rev | 坑 2 条 |
|
||||
| 10 | seed-004 | JS 签名逆向(Webpack+AES+时间戳) | re-script-deob / re-crypto-id | 坑 2 条 |
|
||||
| 11 | 2026-07-22 | Electron Bytenode 特权更新链(字节码+更新校验) | re-managed(re-dotnet 相邻) | 坑 2 条 |
|
||||
| 12 | 2026-05-15 | Go TLS 分片代理逆向 | re-go / re-tls | 坑 2 条 |
|
||||
|
||||
## 吸收格式与规则
|
||||
|
||||
**坑格式**(与技能库既有体例一致):`**标题**:现象——…;原因——…;对策——…`
|
||||
|
||||
**改写规则**:
|
||||
1. seed 的踩坑表(问题/原因/解决方案)直接映射为现象/原因/对策
|
||||
2. 真实条目的方法链蒸馏成可复用坑(保留技术结论,删目标细节)
|
||||
3. 每技能吸收 1-4 条(按价值裁量,不硬凑)
|
||||
|
||||
**查重规则**:
|
||||
- 入库前 `grep -n "关键词" <目标技能>/SKILL.md`(含 references/)
|
||||
- 同现象已存在 → 跳过并记录
|
||||
- 内容更完整的新版本可合并
|
||||
|
||||
**版权注明**:
|
||||
- 每技能吸收的条目末尾加一行:`(来源:reverse-skill field-journal,MIT)`
|
||||
- README 不需要额外声明(条目级注明即可)——或按技能库惯例在吸收批次 commit message 注明
|
||||
|
||||
**脱敏**:
|
||||
- 真实条目中的目标特征(名称/域名/指纹)全部泛化
|
||||
- 工具名/版本号/公开技术特征保留(如 GoReSym、跳转表公式)
|
||||
|
||||
## 查重预检(已识别)
|
||||
|
||||
- seed-008 SSL Pinning:frida-scripts.md 已有「SSL 固定绕过」模板——**预判命中,吸收时先查重,命中则跳过**
|
||||
- seed-010 pwn ROP:re-pwn 已有——不在候选(跳过清单已含)
|
||||
- seed-015 UART:re-hardware-io 已有——不在候选(跳过清单已含)
|
||||
- seed-011 PCAP:re-proto-rev 已覆盖协议状态机——吸收前查重,可能部分命中
|
||||
|
||||
## 校验与测试
|
||||
|
||||
- 每处吸收后 `npm test` 全绿(107 skills 不变,无新技能)
|
||||
- 吸收条目无 [[死链]](引用技能均存在)
|
||||
- 红线 2:吸收内容无具体项目/公司/产品指代
|
||||
- 不触碰工作区其他文件
|
||||
|
||||
## 范围外
|
||||
|
||||
- reverse-skill 机制层(routing.json/tool-index/自动回流 CI/scope 门/下一步菜单/CTF 编排)——用户确认不做
|
||||
- 渗透测试类条目(Web/AD/云渗透)——非逆向域
|
||||
- reverse-skill 自身工程类条目
|
||||
@@ -0,0 +1,102 @@
|
||||
# 4 个语言逆向技能设计(2026-08-18)
|
||||
|
||||
## 背景
|
||||
|
||||
rev-skills(97 技能)语言逆向覆盖目前只有 re-go / re-rust。用户确认新增 4 个语言技能:Swift / Zig / Nim / 函数式运行时(Haskell+OCaml 合并)。
|
||||
|
||||
设计约束(沿用全库红线与原则):
|
||||
- **红线 1 呈现中性**:禁用「最推荐」「强烈建议」等最高级强推措辞
|
||||
- **红线 2 隐私脱敏**:内容不指向具体项目/公司/产品
|
||||
- **不绑定具体工具**:方法为核心,工具为可替换示例(工具准备保留跨 OS 安装指引)
|
||||
- 工作区已干净(无未提交文件)——re-binary-core 可正常修改提交
|
||||
- 当前分支 `main`
|
||||
|
||||
## 变更总览
|
||||
|
||||
| # | 新技能 | 类型 | 挂载 | 计数 |
|
||||
|---|---|---|---|---|
|
||||
| 1 | re-swift | 原子 | re-binary-core | 98 |
|
||||
| 2 | re-zig | 原子 | re-binary-core | 99 |
|
||||
| 3 | re-nim | 原子 | re-binary-core | 100 |
|
||||
| 4 | re-fp-runtime | 原子 | re-binary-core | 101 |
|
||||
|
||||
最终:101 技能 = 1 入口 + 12 网关 + 88 原子。
|
||||
|
||||
## ① re-swift(Swift 生态)
|
||||
|
||||
- **定位**:Swift 二进制逆向——mangling、协议 witness table、闭包捕获、ObjC 互操作
|
||||
- **frontmatter**:`name: re-swift`;触发词:Swift逆向、swiftc、witness table、swift demangle、闭包捕获、Swift 产物
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:Swift 产物(Mach-O/ELF 含 Swift mangling 特征);不用:纯 ObjC(走 [[re-ios]] / [[re-macos]] 的 ObjC 路径)
|
||||
2. 工具准备——swift-demangle(Swift 工具链)、llvm-objdump、Ghidra/IDA;跨 OS 安装命令
|
||||
3. 操作步骤——
|
||||
1. 产物识别(`$s` mangling 前缀、swift_* 运行时导入)
|
||||
2. mangling 解码(swift-demangle 批量:类型/函数/泛型展开)
|
||||
3. 协议 witness table(协议方法分发表定位与还原)
|
||||
4. 闭包捕获(context 结构:捕获变量布局还原)
|
||||
5. ObjC 互操作(@objc 桥接、NSObject 子类、消息发送路径)
|
||||
4. 跨域联合——[[re-binary-core]] 网关;[[re-ios]] / [[re-macos]] 生态衔接
|
||||
5. 常见坑与陷阱——mangling 版本差异、泛型展开符号爆炸、witness table 无符号名、闭包捕获含引用语义
|
||||
- **挂载**:re-binary-core 子技能列表 + 选择树分支;re-ios / re-macos 跨域引用
|
||||
|
||||
## ② re-zig(Zig 产物)
|
||||
|
||||
- **定位**:Zig 编译产物逆向——ABI 简单(无 RTTI/无异常)、comptime 展开、panic/错误处理路径
|
||||
- **frontmatter**:触发词:Zig逆向、zig、comptime、zig 产物、panic
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:Zig 产物(无 C++ RTTI/异常表、panicking 函数特征);不用:C/C++ 产物(走 [[re-cpp-abi]])
|
||||
2. 工具准备——readelf / llvm-nm、Ghidra/IDA;跨 OS 安装
|
||||
3. 操作步骤——
|
||||
1. 产物识别(panicking 函数特征、std 符号模式、无 RTTI/异常表)
|
||||
2. 导出符号与启动路径(start/main、comptime 展开产物)
|
||||
3. panic/错误处理路径(错误联合类型布局)
|
||||
4. C ABI 边界(@extern/@cImport 产物识别)
|
||||
4. 跨域联合——[[re-binary-core]] 网关;[[re-cpp-abi]] 边界区分
|
||||
5. 常见坑与陷阱——comptime 展开导致符号膨胀、panic 路径误导、错误联合布局版本差异、与 C 混合编译难分界
|
||||
- **挂载**:re-binary-core
|
||||
|
||||
## ③ re-nim(Nim 产物)
|
||||
|
||||
- **定位**:Nim 编译产物逆向——GC/异常运行时、NimString、导出符号
|
||||
- **frontmatter**:触发词:Nim逆向、nim、NimString、NimMain、nim 产物
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:Nim 产物(NimMain/GC 符号特征);不用:C 产物(走 [[re-binary-core]] 通用)
|
||||
2. 工具准备——readelf、Ghidra/IDA;跨 OS 安装
|
||||
3. 操作步骤——
|
||||
1. 产物识别(NimMain / GC 符号、NimString 结构特征)
|
||||
2. 字符串与序列结构(NimStringV2 布局:len/reserved/data)
|
||||
3. 异常与 raises 路径(Nim 异常机制)
|
||||
4. GC 与引用计数(refc/orc 差异)
|
||||
4. 跨域联合——[[re-binary-core]] 网关
|
||||
5. 常见坑与陷阱——GC 版本差异(refc/orc)、NimString 布局随版本变化、导出符号被 strip、C 混合编译
|
||||
- **挂载**:re-binary-core
|
||||
|
||||
## ④ re-fp-runtime(函数式运行时:Haskell / OCaml 合并)
|
||||
|
||||
- **定位**:函数式语言运行时逆向——GHC RTS 与 OCaml runtime 的闭包/堆模型;逆向着重数据流而非控制流
|
||||
- **frontmatter**:触发词:Haskell逆向、OCaml逆向、GHC RTS、thunk、STG、OCaml runtime、闭包、函数式产物
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:Haskell/OCaml 产物(RTS 符号、block 头特征);不用:命令式语言产物(各归各技能)
|
||||
2. 工具准备——readelf、ghc 工具链(ghc-nm 等)、ocamlobjinfo、Ghidra/IDA;跨 OS 安装
|
||||
3. 操作步骤——
|
||||
1. 运行时识别(GHC RTS 符号 / OCaml block 头;字节码 vs 原生产物区分)
|
||||
2. 闭包与堆对象(GHC thunk/CAF 布局;OCaml tagged int / block 头)
|
||||
3. 调用约定(GHC 栈/寄存器约定;OCaml 参数传递)
|
||||
4. 分析策略(数据流优先——函数式产物控制流被打散,闭包字段与构造器是主要线索)
|
||||
4. 跨域联合——[[re-binary-core]] 网关
|
||||
5. 常见坑与陷阱——RTS 版本差异、thunk 惰性求值误导(未求值闭包 vs 已求值)、OCaml 字节码非 native、控制流打散导致静态分析失效
|
||||
- **挂载**:re-binary-core
|
||||
|
||||
## 同步
|
||||
|
||||
- re-binary-core:子技能列表加 4 个 + 选择树加 4 分支(目标语言 → 对应技能)
|
||||
- re-ios / re-macos 跨域联合各加一行 [[re-swift]]
|
||||
- README:技能导航(97)→(101)、「12 大类网关 → 84 原子技能」→ 88、re-binary-core 导航行加 4 个
|
||||
- AGENTS.md:(97 个技能)→(101 个技能)、原子技能(84)→(88)
|
||||
- marketplace.json:97 个技能 → 101 个技能
|
||||
|
||||
## 校验与测试
|
||||
|
||||
- validate.mjs 自动覆盖 4 个新技能(frontmatter name=目录名 / type=atomic / 工具准备 / 链接)
|
||||
- `npm test` 全绿(101 skills validated)
|
||||
- 工作区已干净,无未提交文件冲突
|
||||
@@ -0,0 +1,78 @@
|
||||
# re-feedback 网关设计(2026-08-18)
|
||||
|
||||
## 背景与问题
|
||||
|
||||
aiHK/re-skills 是 88 个逆向工程技能库(1 入口 re-analyze + 11 大类网关 + 76 原子技能),公开发布(npm + 插件市场)。
|
||||
|
||||
现有经验流:`wxsource.mjs` 抓看雪/微信文章 → 手动蒸馏成「坑」条目 → 就近写入对应技能 SKILL.md → commit(如「经验: 第八轮扫描入库4篇」)。
|
||||
|
||||
缺失能力:
|
||||
- 实战分析会话的经验回馈通道(分析完踩的坑没有沉淀路径)
|
||||
- 用户手动投喂经验的入口
|
||||
- 统一的呈现与隐私规范
|
||||
|
||||
## 目标
|
||||
|
||||
新建第 12 个网关技能 `re-feedback`(**元网关**——管理技能库自身的经验,不分析 RE 目标),实现:
|
||||
|
||||
1. **收集**:三源归一——分析会话复盘 / 文章扫描蒸馏(wxsource.mjs)/ 用户手动输入
|
||||
2. **蒸馏**:按「坑」格式产出条目,并强制脱敏
|
||||
3. **归域**:条目映射到具体技能
|
||||
4. **三档处理**(中性呈现,用户自决):① 发表 issue ② 本地入库 ③ 不入库
|
||||
5. **钩子**:re-analyze 流程末尾加「可选经验复盘」步骤
|
||||
|
||||
## 设计原则(两条红线)
|
||||
|
||||
### 呈现中性原则
|
||||
- 呈现选项/方案时**禁止「最推荐」「强烈建议」等最高级/强推措辞**,推荐最多到「推荐」级
|
||||
- 选项不带推荐标注,只中性列出选项与适用场景,用户凭内容自决
|
||||
- 类比:视频加背景音乐,画面情绪被音乐带走——强推措辞会绑架用户判断,不允许
|
||||
|
||||
### 隐私脱敏原则
|
||||
- 蒸馏产物**不允许具体到某一个项目**(公司/产品/目标样本名),**暗示也不行**(可推断身份的行业+规模+地域组合、专有协议名、内部代号、独特技术特征组合一律禁止)
|
||||
- 目标泛化为通用描述(「某移动应用」「某嵌入式设备」「某通信协议」),条目只留技术结论(现象/原因/对策)
|
||||
- 来源字段:实战会话 → 只写「实战分析会话」+ 时间(如 `2026-08 实战会话`);文章扫描 → 可保留公开文章标题/URL
|
||||
- **本地入库同样受约束**:技能库公开发布(npm + 插件市场),本地即公开
|
||||
- 入库/发 issue 前做**脱敏自检**:列出条目中所有专有名词逐项确认已泛化;任一不通过则回炉重蒸
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
.claude/skills/re-feedback/
|
||||
├── SKILL.md # 网关:完整工作流 + 选择树 + 常见坑
|
||||
└── references/
|
||||
├── intake.md # 蒸馏方法论:坑条目格式、脱敏规则、归域决策表、去重规则
|
||||
└── issue-template.md # issue 正文模板(gh 提交与草稿共用)
|
||||
```
|
||||
|
||||
- **每技能新增** `references/experience.md`(经验全集,条目带来源与日期;无 references 目录的技能新建)
|
||||
- 各技能 SKILL.md「常见坑与陷阱」:保留精选 + 追加链接到本技能 experience.md
|
||||
- re-analyze/SKILL.md:第三步编排后加「第四步(可选):经验复盘」→ 调用 [[re-feedback]]
|
||||
|
||||
## 工作流(5 步)
|
||||
|
||||
1. **收集**:三源归一——会话复盘摘要 / 文章 URL 或文本(可走 wxsource.mjs 抓取)/ 手动输入
|
||||
2. **蒸馏**:每条按坑格式 `**标题**:现象——…;原因——…;对策——…`;「坑」(避坑)与「方法」(方法论)统一格式;**同步脱敏**(见隐私脱敏原则)
|
||||
3. **归域**:主题 → 技能映射(决策表 + grep 技能库兜底 + 不确定时问用户,不猜)
|
||||
4. **三档处理**(中性呈现,不带推荐标注):
|
||||
- **① 发表 issue**:探测 `gh`(`which gh` + `gh auth status` + 仓库可达)→ 可用则 `gh issue create --repo DslsDZC/aihk --label 经验`,标题「经验: <技能>: <一句话>」,正文按 issue-template.md(技能名/现象/原因/对策/来源);不可用 → 输出 markdown 草稿供手动提交
|
||||
- **② 本地入库**:grep 去重 → 追加到该技能 `references/experience.md`(含来源+日期)→ SKILL.md 精选同步或加链接 → `npm test` 校验
|
||||
- **③ 不入库**:确认后结束
|
||||
5. **(文章扫描路径可选)commit**:「经验: 第N轮扫描入库X篇——<篇目>」,message 列出每技能新增条目
|
||||
|
||||
## 错误处理
|
||||
|
||||
| 情况 | 处理 |
|
||||
|---|---|
|
||||
| gh 未装/未登录/仓库不可达 | 降级为草稿输出 |
|
||||
| gh 报 label「经验」不存在 | 去掉 --label 重试,或提示用户先创建 label |
|
||||
| 归域不确定 | 问用户,不猜 |
|
||||
| 条目重复 | 跳过并告知 |
|
||||
| npm test 失败 | 修复格式后再入库 |
|
||||
| 脱敏自检不通过 | 回炉重蒸,不入库/不发 issue |
|
||||
|
||||
## 校验与测试
|
||||
|
||||
- `validate.mjs` 自动覆盖新技能:frontmatter(name=目录名、description、type: gateway)、[[链接]] 完整性(re-feedback 目录存在后 [[re-feedback]] 链接即合法)
|
||||
- type: gateway 豁免「工具准备」章节校验
|
||||
- 手工验证:`npm test` 全绿 + 用一条样本经验走通三档处理
|
||||
@@ -0,0 +1,94 @@
|
||||
# rev-skills 能力新增设计(2026-08-18)
|
||||
|
||||
## 背景
|
||||
|
||||
rev-skills(89 技能 = 1 入口 + 12 网关 + 76 原子)经四库拆解与技能级对标调研(ctf-skills / headless-ghidra / Android-Pentesting-Skill / android-reverse-engineering-skill 等),识别出 5 项生态已有、本库缺失的能力。用户确认全部新增。
|
||||
|
||||
设计约束(沿用全库红线与原则):
|
||||
- **红线 1 呈现中性**:禁用「最推荐」等强推措辞
|
||||
- **红线 2 隐私脱敏**:内容不指向具体项目/公司/产品
|
||||
- **不绑定具体工具**:方法为核心,工具为可替换示例(工具准备章节保留跨 OS 安装指引)
|
||||
- 工作区有 3 个未提交文件(re-binary-core / re-mobile / re-protocol 的 SKILL.md)——各提交不得包含它们
|
||||
|
||||
## 变更总览
|
||||
|
||||
| # | 项 | 类型 | 计数影响 |
|
||||
|---|---|---|---|
|
||||
| 1 | re-python | 新原子技能(挂 re-managed) | 90 |
|
||||
| 2 | re-frida-script-author | 新原子技能 | 91 |
|
||||
| 3 | Keystore 审计 | 并入 re-android-native | — |
|
||||
| 4 | Flutter MethodChannel 拦截 | 并入 re-hybrid-app | — |
|
||||
| 5 | svc 裸系统调用检测 | 并入 anti-dynamic-workflow.md | — |
|
||||
|
||||
最终:91 技能 = 1 入口 + 12 网关 + 78 原子。
|
||||
|
||||
## ① re-python(新原子技能)
|
||||
|
||||
- **定位**:Python 打包/混淆样本分析——PyInstaller / PyArmor / Nuitka / Cython / pyc
|
||||
- **frontmatter**:`name: re-python`,description 含触发词:Python打包、PyInstaller、PyArmor、pyc、python exe、Python 样本
|
||||
- **章节**(按 docs/skill-template.md 原子技能规范):
|
||||
1. 何时使用 / 何时不用——用:PyInstaller 单文件/目录 exe、PyArmor 加固、.pyc 样本、Nuitka/Cython 编译产物;不用:纯 .py 源码混淆(转 [[re-script-deob]])
|
||||
2. 工具准备——pyinstxtractor(pip 或脚本)、PyArmor-Unpacker(按版本选法)、pycdc / pycdas、python3、file;各工具跨 OS 安装命令
|
||||
3. 操作步骤——
|
||||
1. 识别打包器:`file` + strings 特征(PyInstaller 的 `PyInstaller`/`_MEI` 字符串、PyArmor runtime 特征)
|
||||
2. PyInstaller 解包:pyinstxtractor 提取归档,定位主 .pyc
|
||||
3. PyArmor 解包:按 PyArmor 版本选 PyArmor-Unpacker 三方法之一
|
||||
4. pyc 版本识别:magic 号对照表(按 struct.unpack 读头 4 字节,对照 Python 版本)
|
||||
5. 清理 confusion code:删假函数/死代码,定位核心加密/外泄逻辑
|
||||
4. 跨域联合——[[re-managed]] 网关调用;纯脚本混淆转 [[re-script-deob]];恶意场景转 [[re-malware]];pyc 深度还原转 [[re-binary-core]]
|
||||
5. 常见坑与陷阱——pyc 版本不匹配、PyArmor 版本差异、Cython 产物无 pyc、假函数干扰定位
|
||||
- **挂载**:re-managed 选择树加分支「.exe 且含 PyInstaller/PyArmor 特征 → [[re-python]]」
|
||||
|
||||
## ② re-frida-script-author(新原子技能)
|
||||
|
||||
- **定位**:目标特征 → Frida 脚本生成方法论(探 → 选 → 改 → 验);独立于 re-frida 的执行操作(用户确认独立技能)
|
||||
- **frontmatter**:`name: re-frida-script-author`,description 含触发词:生成Frida脚本、写hook脚本、frida脚本怎么写、写个hook
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:需要新脚本时(拦截/绕过/追踪);不用:执行现成脚本(转 [[re-frida]])
|
||||
2. 工具准备——frida-tools、python3、目标设备/模拟器;模板素材 [[frida-scripts]]
|
||||
3. 操作步骤——
|
||||
1. 目标侦察:静态特征(目标 API/类名/加固商)+ 基线行为(崩溃迭代法,见 [[anti-dynamic-workflow]])
|
||||
2. 检测点/目标 API 识别:加密 → 拦截模板;证书固定 → SSL 模板;双向 TLS → keystore 模板;反调试 → 检测绕过模板
|
||||
3. 模板选择:按 [[frida-scripts]] 模板表选骨架
|
||||
4. 改写:包名/类名/方法名/overload 精确匹配(保存 original、带 this 调用)
|
||||
5. 验证:spawn + `--pause` 跑通,输出 JSON 可解析,失败回退步骤 2
|
||||
4. 跨域联合——[[re-frida]] 执行;[[re-mobile]] / [[re-android-native]] 场景衔接;[[anti-dynamic-workflow]] 对抗面
|
||||
5. 常见坑与陷阱——overload 不匹配静默失效、Java.use 缓存覆盖、参数索引版本相关、先探后写不猜
|
||||
- **挂载**:re-frida 跨域联合加「脚本生成 → [[re-frida-script-author]]」
|
||||
|
||||
## ③ Keystore 审计(并入 re-android-native)
|
||||
|
||||
re-android-native 加「Keystore 审计」章节:
|
||||
- AndroidKeyStore 遍历:`KeyStore.getInstance("AndroidKeyStore")` → `aliases()` 枚举
|
||||
- 条目属性:算法/用途/来源(KeyInfo 的 isInsideSecureHardware——TEE vs StrongBox 区分)
|
||||
- 用途判断:签名密钥 / 加密密钥 / 生物绑定(setUserAuthenticationRequired)
|
||||
- 与 hook 的衔接:加密拦截时若密钥来自 Keystore,`getEncoded()` 不可用——记录别名与用途而非密钥字节
|
||||
|
||||
## ④ Flutter MethodChannel 拦截(并入 re-hybrid-app)
|
||||
|
||||
re-hybrid-app 加「Flutter MethodChannel 动态拦截」章节:
|
||||
- hook `io.flutter.plugin.common.MethodChannel` 的 MethodCallHandler(channel 名/方法名/参数 JSON 记录)
|
||||
- engine messenger 层拦截(平台通道消息)
|
||||
- 与 Dart 侧静态观察互补(channel 名与调用点)
|
||||
|
||||
## ⑤ svc 裸系统调用检测(并入 anti-dynamic-workflow.md)
|
||||
|
||||
anti-dynamic-workflow.md 加「裸系统调用检测」节:
|
||||
- 原理:目标自实现系统调用绕过 libc,基于 libc 符号的 hook 与检测失效
|
||||
- 手法:按架构分支特征码(arm64 SYS_OPEN=56、svc 机器码 `01 00 00 D4`;arm SYS_OPEN=5、`00 00 00 EF`)
|
||||
- 可执行段扫描(r-x)过滤 .so 段 → Memory.scan 特征码 → 回读 svc 前一条指令取系统调用号 → 命中 SYS_OPEN 才 attach → 打印文件名与返回值
|
||||
- 注意:arm64 分支参数索引按系统调用约定核对
|
||||
|
||||
## 计数同步
|
||||
|
||||
- README:技能导航(89)→(91);「12 大类网关 → 76 原子技能」→ 78;导航列表加 re-python / re-frida-script-author 两行
|
||||
- AGENTS.md:(89 个技能)→(91 个技能)
|
||||
- marketplace.json:description「89 个技能」→「91 个技能」
|
||||
- re-managed / re-frida 挂载(见 ①②)
|
||||
|
||||
## 校验与测试
|
||||
|
||||
- validate.mjs 自动覆盖两个新技能(frontmatter name=目录名 / type=atomic / 工具准备章节 / [[链接]] 完整性)
|
||||
- `npm test` 全绿(91 skills validated)
|
||||
- 手工验证:新技能 frontmatter 触发词有效、挂载链接可解析
|
||||
- 不触碰工作区 3 个未提交文件;提交按文件粒度
|
||||
@@ -0,0 +1,79 @@
|
||||
# 中途再路由机制设计(2026-08-18)
|
||||
|
||||
## 背景与问题
|
||||
|
||||
rev-skills(91 技能)的入口流程(re-analyze:探测 → 偏好 → 识别 → 编排)是一次性的:执行中遇到**新证据类型**(发现加壳、加密、反调试、行为异常)时,agent 不会回头重跑任务识别再调对应技能,而是自行硬琢磨。现有「检查新证据」只有一句建议性表述(triage.md:31「每个环节完成后检查是否有新证据改变后续路径」、re-analyze:43「每个环节完成后检查新证据」),无强制机制、无触发表、不可执行。
|
||||
|
||||
**结果**:技能库存在但分析中途不触发——这是技能库价值闭环的核心缺口。
|
||||
|
||||
## 目标
|
||||
|
||||
建立「中途再路由」机制:分析过程中,证据特征出现即触发对应技能;网关完成必查;未命中时按约束换路,禁止无限硬琢磨。
|
||||
|
||||
## 设计
|
||||
|
||||
### ① 新建 `re-analyze/references/rerouting.md`(证据→技能触发表)
|
||||
|
||||
**定位**:运行时证据触发的唯一事实源(区别于 triage.md 的入口「目标→路径」决策表)。
|
||||
|
||||
**A 表:证据特征 → 触发技能**(分析中看到什么 → 调什么):
|
||||
|
||||
| 证据特征(分析中看到) | 触发技能 |
|
||||
|---|---|
|
||||
| 节表异常(UPX0/.aspack)、熵 >7.0 | [[re-packer-id]] → [[re-anti-analysis]] |
|
||||
| 未知加密算法、S-box/常量指纹、加密流量 | [[re-crypto-id]] |
|
||||
| 硬编码密钥/口令、内存中的 key | [[re-crypto-keys]] |
|
||||
| 解密函数已定位、密文可还原 | [[re-crypto-decrypt]] |
|
||||
| 反调试/反 VM 特征(ptrace、CPUID、时间检测) | [[re-evasion]] / [[re-anti-analysis]] |
|
||||
| 动态注册 JNI、so 函数级加密 | [[re-android-native]] |
|
||||
| 混淆(CFF/花指令/字符串加密) | [[re-deobfuscate]] |
|
||||
| 网络回连/信标/C2 特征 | [[re-netcap]] → [[re-behavior]] |
|
||||
| 持久化/注入/进程树异常 | [[re-behavior]] |
|
||||
| 崩溃/段错误/ASAN 报告 | [[re-crash-triage]] |
|
||||
| Python 打包特征(PyInstaller/PyArmor) | [[re-python]] |
|
||||
| Flutter/RN 引擎特征 | [[re-hybrid-app]] |
|
||||
| 加固商特征(加固壳) | [[re-mobile-pack]] |
|
||||
| RTTI/异常表(.pdata/.xdata)密集 | (re-cpp-abi 待建,先走 [[re-binary-core]]) |
|
||||
|
||||
**B 表:卡住信号 → 换路**(防硬琢磨):
|
||||
|
||||
| 卡住信号 | 换路 |
|
||||
|---|---|
|
||||
| 同参数重复 ≥2 次无新证据 | 对照 A 表重查 / 换工具视角([[analysis-contract]] 调查预算) |
|
||||
| 单命令 ≥3 次无进展 | 停下评估,重跑 re-analyze 第二步(任务识别)或换网关 |
|
||||
| 分析超 30 次工具调用无结论 | 回退到最近有产出的环节,按复核格式交付部分结论 |
|
||||
| 目标行为与静态结论矛盾 | 动态侧 [[re-sandbox]] / [[re-tracing]] 对照 |
|
||||
|
||||
**使用规则**:每产出新证据类型 → 查 A 表命中即调技能;每网关完成 → 查 A+B 表;未命中 → 按 B 表约束行动,禁止无限硬琢磨。
|
||||
|
||||
### ② re-analyze/SKILL.md 第三步改双轨强制
|
||||
|
||||
现状(一句建议)改为:
|
||||
|
||||
```
|
||||
第三步编排分派(双轨再路由):
|
||||
- 轨 1(网关完成必查):每网关完成后,对照 rerouting.md 的 A/B 表检查新证据;命中 → 调用对应技能,完成后回到轨 1 继续
|
||||
- 轨 2(证据出现即查):分析中每产出新证据类型(字符串/节表/行为/加密特征),立即对照 A 表;命中 → 调用技能
|
||||
- 未命中任何表项 → 按 B 表约束行动(换思路/回退/交付部分结论),禁止自行硬琢磨
|
||||
```
|
||||
|
||||
### ③ 两个引用点
|
||||
|
||||
- `analysis-contract.md`:加一行「中途再路由:证据触发按 [[rerouting]](双轨),命中即调技能」
|
||||
- `triage.md:31`:原「每个环节完成后检查是否有新证据改变后续路径」改为指向 [[rerouting]](统一事实源)
|
||||
|
||||
### ④ re-analyze 常见坑加一条
|
||||
|
||||
- **走完入口不再调用技能**:现象——入口编排后自己硬琢磨,中途发现新特征(壳/加密/反调试)不调对应技能;原因——再路由未执行;对策——按第三步双轨:每网关完成/每新证据对照 [[rerouting]] 触发表,命中即调
|
||||
|
||||
## 校验
|
||||
|
||||
- `npm test` 全绿(91 skills 不变,无新增技能)
|
||||
- rerouting.md 的 [[链接]] 全部指向已存在技能;re-cpp-abi 未建(触发表该行用文字标注待建,不写死链)
|
||||
- 不触碰工作区未提交文件(re-binary-core / re-mobile / re-protocol SKILL.md、README.md)
|
||||
|
||||
## 范围外(后续子项目)
|
||||
|
||||
- 6 个单开技能(re-cpp-abi / re-macos / re-attribution / re-hw-chip / re-ai-attack / re-sdr)
|
||||
- 7 处融入(区块链进阶 / 汽车 IVI-V2X / JS 高级混淆 / 容器镜像 / 内核利用 / 指令级追踪 / 数据库格式)
|
||||
- 均各自独立 brainstorm → spec → plan
|
||||
@@ -0,0 +1,95 @@
|
||||
# 7 处融入设计(2026-08-18)
|
||||
|
||||
## 背景
|
||||
|
||||
rev-skills(97 技能)扩展方向调研的第二批:7 处「应用场景/方法论延伸」融入现有技能(不新增技能、不改计数)。
|
||||
|
||||
设计约束(沿用全库红线与原则):
|
||||
- **红线 1 呈现中性**:禁用「最推荐」「强烈建议」等最高级强推措辞
|
||||
- **红线 2 隐私脱敏**:内容不指向具体项目/公司/产品
|
||||
- **不绑定具体工具**:方法为核心,工具为可替换示例
|
||||
- 工作区有 3 个未提交文件(re-binary-core / re-mobile / re-protocol 的 SKILL.md)——本计划 7 个融入目标技能均为干净文件,不涉及
|
||||
- 计数不变:97 = 1 入口 + 12 网关 + 84 原子
|
||||
|
||||
## 变更总览
|
||||
|
||||
| # | 融入目标 | 新增章节 | 内容 |
|
||||
|---|---|---|---|
|
||||
| 1 | re-blockchain | ## 非 EVM 链(Solana / Move) | Solana BPF 字节码、Sui/Aptos Move、DeFi/NFT 场景 |
|
||||
| 2 | re-automotive | ## IVI / T-Box / V2X 路径 | 路径分流(IVI→系统分析、T-Box→模组、V2X→协议) |
|
||||
| 3 | re-script-deob | ## 高级混淆对抗(商业混淆器) | JScrambler 类:CFF/字符串加密/死代码注入对抗 |
|
||||
| 4 | re-forensics | ## 容器镜像取证 | 镜像层提取与文件系统分析 |
|
||||
| 5 | re-exploit | ## 内核利用 | 提权原语、堆喷、内核 UAF 路径 |
|
||||
| 6 | re-tracing | ## 指令级追踪 | QEMU 插件、Intel PT、trace 分析 |
|
||||
| 7 | re-disk-forensics | ## 数据库文件格式 | SQLite 页结构、WAL、删除恢复 |
|
||||
|
||||
## ① re-blockchain:非 EVM 链(Solana / Move)
|
||||
|
||||
「## 跨域联合」前插入:
|
||||
|
||||
- **Solana**:BPF 字节码(eBPF 类指令集)——识别特征(ELF + .text 段 BPF 指令)、反编译路径(llvm-objdump BPF 反汇编 / 专用反编译器)、程序账户与指令调度(CPI 调用链)
|
||||
- **Sui / Aptos(Move)**:Move 字节码(模块/资源/函数表)——反编译(move disassembler)、资源模型(对象/能力)对漏洞面的影响(转账/所有权逻辑)
|
||||
- **DeFi/NFT 场景**:池子合约(AMM 常量积公式)、代币标准(ERC-20 变体/SPL)、授权与提现逻辑定位
|
||||
- 流程与 EVM 同构(字节码反编译 → 漏洞分析),指令集与资源模型不同——识别运行时后按对应路径走
|
||||
|
||||
## ② re-automotive:IVI / T-Box / V2X 路径
|
||||
|
||||
「## 跨域联合」前插入:
|
||||
|
||||
- **IVI(车载娱乐系统)**:本质是 Android/Linux 系统——走 [[re-apk]](Android 应用)/ [[re-firmware]](系统镜像)路径;关注 OEM 定制层(启动器/诊断接口)
|
||||
- **T-Box(远程信息处理箱)**:蜂窝模组(AT 指令接口)、MCU 固件([[re-fw-extract]])、远程控制协议(车控指令)
|
||||
- **V2X(车联网通信)**:DSRC / C-V2X 帧结构 → [[re-protocol]] / [[re-ics]] 路径(协议状态机重建)
|
||||
- 判定规则:按目标形态分流(应用层→移动/系统路径;通信层→协议路径;固件层→固件路径)
|
||||
|
||||
## ③ re-script-deob:高级混淆对抗(商业混淆器)
|
||||
|
||||
「## 跨域联合」前插入:
|
||||
|
||||
- **特征识别**:JScrambler 类商业混淆器特征(bootstrap 加载器、字符串表隐藏、`_0x` 变量重命名模式)
|
||||
- **控制流平坦化(CFF)对抗**:dispatcher 识别(switch 分发中心)→ 状态变量追踪 → 分支还原(与 [[re-deobfuscate]] 的方法衔接)
|
||||
- **字符串加密对抗**:隐藏字符串表定位(解码函数调用点)→ 运行时提取(动态执行取值或静态还原)
|
||||
- **死代码注入对抗**:无引用函数过滤(同 ctf-malware 配方:按调用关系过滤)
|
||||
- 工具链:js-beautify 美化 → 手动还原或半自动脚本;动态侧([[re-sandbox]] 内执行解码函数)
|
||||
|
||||
## ④ re-forensics:容器镜像取证
|
||||
|
||||
「## 跨域联合」前插入:
|
||||
|
||||
- **镜像结构**:tar 归档 + 分层(每层 = 文件系统快照差异)
|
||||
- **层提取**:`docker save` / `skopeo copy` 导出 → 解包层(复用 [[re-disk-forensics]] / [[re-fw-rootfs]] 的文件系统分析)
|
||||
- **分析重点**:配置与密钥(环境变量/挂载点/entrypoint 脚本)、历史层残留(删除文件在旧层仍可恢复)、恶意镜像判定(启动命令/网络行为)
|
||||
- 输出:镜像内容清单 + 可疑项(与 [[re-ioc]] 衔接)
|
||||
|
||||
## ⑤ re-exploit:内核利用
|
||||
|
||||
「## 跨域联合」前插入:
|
||||
|
||||
- **提权原语**:modprobe_path 覆写、cred 结构覆写、io_uring/BPF 子系统利用面
|
||||
- **堆喷与对象布局**:堆喷策略、对象重叠(UAF 后伪造对象)、SLUB 分配器行为
|
||||
- **内核 UAF 利用路径**:漏洞触发 → 对象重用 → 控制流劫持(函数指针/ops 表)
|
||||
- 与用户态同框架:fuzz([[re-fuzzing]])→ crash([[re-crash-triage]])→ 利用(本技能内核路径)
|
||||
- 环境:调试内核(KASAN/KASLR 关闭或绕过)、gdb/kgdb
|
||||
|
||||
## ⑥ re-tracing:指令级追踪
|
||||
|
||||
「## 跨域联合」前插入:
|
||||
|
||||
- **QEMU 插件**:`-plugin` 指令级 trace(insn 粒度、call/ret 路径)、插桩事件(guest 代码块)
|
||||
- **Intel PT**:硬件 trace(`perf record -e intel_pt`)→ 解码(perf script / 第三方解析)、分支流还原
|
||||
- **trace 分析**:热点(执行频次)、路径还原(调用链)、与反混淆衔接(跟踪真实执行路径绕过静态混淆)
|
||||
- 输出:指令级执行流(供 [[analysis-contract]] 证据存档)
|
||||
|
||||
## ⑦ re-disk-forensics:数据库文件格式
|
||||
|
||||
「## 跨域联合」前插入:
|
||||
|
||||
- **SQLite 结构**:页头(page header)、btree 页(interior/leaf)、记录格式(varint/类型码)、溢出页
|
||||
- **WAL 恢复**:WAL 文件解析(未提交事务的帧)、checkpoint 边界
|
||||
- **取证应用**:浏览器/App 数据库(删除记录恢复——freelist 页)、未提交事务提取
|
||||
- 工具:sqlite3 CLI(只读模式 `-readonly`)、页级解析脚本
|
||||
|
||||
## 校验与测试
|
||||
|
||||
- 每处融入后 `npm test` 全绿(97 skills 不变)
|
||||
- 融入章节的 [[链接]] 全部指向已存在技能(re-apk/re-firmware/re-protocol/re-ics/re-fw-extract/re-disk-forensics/re-fw-rootfs/re-ioc/re-deobfuscate/re-sandbox/re-fuzzing/re-crash-triage/analysis-contract 等)
|
||||
- 不触碰工作区 3 个未提交文件
|
||||
@@ -0,0 +1,142 @@
|
||||
# 6 个单开技能设计(2026-08-18)
|
||||
|
||||
## 背景
|
||||
|
||||
rev-skills(91 技能)经扩展方向调研,确认 6 个方法论独特、值得单开的技能。用户确认全部新增。
|
||||
|
||||
设计约束(沿用全库红线与原则):
|
||||
- **红线 1 呈现中性**:禁用「最推荐」「强烈建议」等最高级强推措辞
|
||||
- **红线 2 隐私脱敏**:内容不指向具体项目/公司/产品(攻击者身份归因只写方法不写真实案例)
|
||||
- **不绑定具体工具**:方法为核心,工具为可替换示例(工具准备章节保留跨 OS 安装指引)
|
||||
- 工作区有 4 个未提交文件(re-binary-core / re-mobile / re-protocol 的 SKILL.md、README.md)——各提交不得包含它们;re-binary-core 网关子技能列表挂载时**叠加编辑**该文件需谨慎(该文件有用户未提交改动,挂载行写入会与用户改动共存于工作区,提交时只 add 本任务文件会连同用户改动——**改用 git add 后以 patch 粒度提交或由用户确认**,实施时控制器处理)
|
||||
|
||||
## 变更总览
|
||||
|
||||
| # | 新技能 | 类型 | 挂载 | 计数 |
|
||||
|---|---|---|---|---|
|
||||
| 1 | re-cpp-abi | 原子 | re-binary-core 网关 | 92 |
|
||||
| 2 | re-macos | 原子 | 独立 | 93 |
|
||||
| 3 | re-attribution | 原子 | re-forensics 网关 | 94 |
|
||||
| 4 | re-hw-chip | 原子 | 独立 | 95 |
|
||||
| 5 | re-ai-attack | 原子 | 独立 | 96 |
|
||||
| 6 | re-sdr | 原子 | 独立 | 97 |
|
||||
|
||||
最终:97 技能 = 1 入口 + 12 网关 + 84 原子。
|
||||
|
||||
## ① re-cpp-abi(挂 re-binary-core)
|
||||
|
||||
- **定位**:现代 C++ 二进制(异常/RTTI/模板/lambda)反编译混乱时的专门恢复方法
|
||||
- **frontmatter**:`name: re-cpp-abi`;触发词:C++逆向、RTTI、虚表恢复、异常处理、C++ ABI、mangling
|
||||
- **章节**(按 docs/skill-template.md 原子技能规范):
|
||||
1. 何时使用 / 何时不用——用:RTTI/异常表密集的二进制、反编译结果混乱的 C++ 目标;不用:C 代码/纯汇编(走 re-binary-core 通用路径)
|
||||
2. 工具准备——readelf / llvm-objdump(节表与异常表)、gdb(异常断点)、c++filt / undname(mangling 解码)、Ghidra/IDA 脚本(RTTI 遍历);跨 OS 安装命令
|
||||
3. 操作步骤——
|
||||
1. ABI 识别(Itanium vs MSVC:mangling 特征 `_ZN...` / `??_...`)
|
||||
2. RTTI 重建(_RTTICompleteObjectLocator / _RTTITypeDescriptor 链 → 类继承图)
|
||||
3. 虚表恢复(vtable 定位、类关系反推、调用点定名)
|
||||
4. 异常处理表(.pdata/.xdata、SEH/C++ EH 表 → 控制流恢复)
|
||||
5. 模板/lambda 识别(符号特征与调用模式)
|
||||
6. mangling 解码(c++filt / undname 批量)
|
||||
4. 跨域联合——[[re-binary-core]] 网关调用;[[re-ghidra]] / [[re-ida]] 反编译底座;[[re-deobfuscate]] 混淆衔接
|
||||
5. 常见坑与陷阱——ABI 误判导致 RTTI 解析失败、异常表版本差异、模板展开导致的符号爆炸、lambda 局部类无 RTTI
|
||||
- **挂载**:re-binary-core 子技能列表加 re-cpp-abi;rerouting A 表 RTTI 行改 [[re-cpp-abi]](去「待建」)
|
||||
|
||||
## ② re-macos(独立)
|
||||
|
||||
- **定位**:macOS 原生应用逆向——App Bundle / 签名公证 / entitlements / 沙箱 / 钥匙串与 Secure Enclave
|
||||
- **frontmatter**:触发词:macOS逆向、mac app、entitlements、Secure Enclave、钥匙串、TCC、codesign
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:macOS 原生/闭源应用、带签名公证与沙箱的目标;不用:iOS 应用(转 [[re-ios]])
|
||||
2. 工具准备——codesign / spctl / otool / lipo(签名与 Mach-O 工具)、Hopper/IDA/Ghidra、lldb;跨 OS(macOS 为主,Linux 可分析 Mach-O 静态)
|
||||
3. 操作步骤——
|
||||
1. 包结构(App Bundle、Info.plist、签名/公证检查 `codesign -dv` / `spctl -a`)
|
||||
2. entitlements 与沙箱(`codesign -d --entitlements`、沙箱 profile、TCC 权限库)
|
||||
3. 钥匙串与 Secure Enclave(钥匙串 ACL、可访问性类、硬件密钥——getEncoded 不可用的等效场景)
|
||||
4. dyld 加载链(LC_*、注入面、Dylib Hijacking)
|
||||
5. 反调试与保护(taskgated、代码签名校验对抗、Gatekeeper 绕过面分析)
|
||||
4. 跨域联合——[[re-ios]] 互补(iOS 越狱生态);[[re-format-macho]] 格式底座;[[re-lldb]] 调试
|
||||
5. 常见坑与陷阱——签名校验在多处(加载/运行/更新)、TCC 权限数据在系统库、Secure Enclave 密钥不可提取、公证检查离线不可复现
|
||||
- **挂载**:独立;re-ios 跨域联合加引用
|
||||
|
||||
## ③ re-attribution(挂 re-forensics)
|
||||
|
||||
- **定位**:威胁归因方法论——从线索到攻击者身份的推理链(区别于 re-ti 的情报查询)
|
||||
- **frontmatter**:触发词:归因、APT、attribution、攻击者身份、基础设施图谱、钻石模型
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:情报归因请求、基础设施关联分析;不用:单个 IOC 查询(转 [[re-ti]])
|
||||
2. 工具准备——关联查询工具(Passive DNS、证书透明日志、Whois)、MISP、图分析工具;跨 OS 安装
|
||||
3. 操作步骤——
|
||||
1. 钻石模型(受害者/基础设施/能力/对手四角关系)
|
||||
2. 基础设施图谱(域名/IP/证书/Whois 关联聚类)
|
||||
3. 能力与样本归因(代码复用、TTP 对比、时间线对齐)
|
||||
4. 置信度分级(低/中/高 + 证据链,避免过度归因)
|
||||
5. 报告(脱敏、声明边界)
|
||||
4. 跨域联合——[[re-ti]] 情报输入;[[re-ioc]] 指标提取;[[re-behavior]] 行为证据
|
||||
5. 常见坑与陷阱——基础设施重叠导致的误归因、跳板机≠归属、置信度虚高、脱敏红线
|
||||
- **挂载**:re-forensics 网关子技能列表加 re-attribution
|
||||
|
||||
## ④ re-hw-chip(独立)
|
||||
|
||||
- **定位**:物理层硬件逆向——芯片解密、PCB 电路分析、硬件木马检测
|
||||
- **frontmatter**:触发词:芯片逆向、去封装、decapping、PCB、硬件木马、电路分析、裸片
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:物理芯片/板级分析(固件提取失败后的物理层);不用:固件级分析(转 [[re-fw-extract]] / [[re-hardware-io]])
|
||||
2. 工具准备——显微镜/探针台、decapping 设备与耗材、逻辑分析仪、热成像;耗材类工具给选购指引
|
||||
3. 操作步骤——
|
||||
1. 去封装(化学/激光 decap,风险控制与防护)
|
||||
2. 裸片分析(显微成像、金属层/ROM 提取)
|
||||
3. 探针与信号提取(FIB 修改、总线嗅探)
|
||||
4. PCB 电路分析(走线还原、IC 标识、JTAG/SWD 引脚定位)
|
||||
5. 硬件木马检测(冗余逻辑、触发器特征、功耗/时序异常)
|
||||
4. 跨域联合——[[re-hardware-io]] 接口提取衔接;[[re-fw-extract]] 固件侧;[[re-sdr]] 无线侧
|
||||
5. 常见坑与陷阱——decap 破坏性不可逆、探针负载改变信号、FIB 高成本、木马误报
|
||||
- **挂载**:独立;re-hardware-io 跨域引用
|
||||
|
||||
## ⑤ re-ai-attack(独立)
|
||||
|
||||
- **定位**:AI 模型攻击与取证——提取攻击、指纹/水印、成员推断
|
||||
- **frontmatter**:触发词:模型提取、模型窃取、水印检测、模型指纹、成员推断、对抗样本
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:模型泄露/窃取取证、API 模型攻击评估;不用:模型文件格式解析(转 [[re-ai-model]])
|
||||
2. 工具准备——python3、ML 工具链(torch/tf)、查询接口客户端;跨 OS 安装
|
||||
3. 操作步骤——
|
||||
1. 模型提取攻击(API 查询蒸馏、输出分布重建、置信度利用)
|
||||
2. 模型指纹/水印(嵌入检测、指纹提取、窃取取证)
|
||||
3. 成员推断(训练数据泄露判定)
|
||||
4. 对抗样本基础(黑盒/白盒扰动)
|
||||
4. 跨域联合——[[re-ai-model]] 格式与权重侧;[[re-feedback]] 经验(攻击案例脱敏沉淀)
|
||||
5. 常见坑与陷阱——查询预算限制、置信度不可得时降级、水印被抹除、成员推断误报
|
||||
- **挂载**:独立;re-ai-model 跨域引用
|
||||
|
||||
## ⑥ re-sdr(独立)
|
||||
|
||||
- **定位**:射频逆向——信号采集、解调、协议帧恢复
|
||||
- **frontmatter**:触发词:SDR、射频、信号分析、解调、RTL-SDR、HackRF
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:无线协议/遥控/遥测信号;不用:有线协议(转 [[re-protocol]])
|
||||
2. 工具准备——RTL-SDR/HackRF、GNU Radio、inspectrum、Universal Radio Hacker (URH);跨 OS 安装
|
||||
3. 操作步骤——
|
||||
1. 信号采集与频谱分析(中心频率/带宽/调制识别)
|
||||
2. 解调(AM/FM/PSK/QAM/FSK)
|
||||
3. 帧同步与协议恢复(preamble、同步字、URH 位流恢复)
|
||||
4. 重放与交互(授权测试场景)
|
||||
4. 跨域联合——[[re-iot-proto]] 无线 IoT 协议衔接;[[re-feedback]] 经验沉淀
|
||||
5. 常见坑与陷阱——频率偏移/采样率错误、调制误判、重放需授权、法律边界
|
||||
- **挂载**:独立;re-iot-proto 跨域引用
|
||||
|
||||
## 同步
|
||||
|
||||
- rerouting A 表 RTTI 行:`(re-cpp-abi 待建,先走 [[re-binary-core]])` → `[[re-cpp-abi]]`
|
||||
- README:技能导航(91)→(97)、「12 大类网关 → 78 原子技能」→ 84、导航加 6 行
|
||||
- AGENTS.md:(91 个技能)→(97 个技能)、原子技能(78)→(84)
|
||||
- marketplace.json:91 个技能 → 97 个技能
|
||||
- re-binary-core 网关子技能列表加 re-cpp-abi(**该文件有用户未提交改动——提交粒度由控制器处理**)
|
||||
- re-forensics 网关子技能列表加 re-attribution
|
||||
- re-ios / re-hardware-io / re-ai-model / re-iot-proto 跨域联合各加一行引用
|
||||
|
||||
## 校验与测试
|
||||
|
||||
- validate.mjs 自动覆盖 6 个新技能(frontmatter name=目录名 / type=atomic / 工具准备 / 链接)
|
||||
- `npm test` 全绿(97 skills validated)
|
||||
- rerouting A 表 RTTI 行改 [[re-cpp-abi]] 后链接可解析
|
||||
- 不触碰工作区 4 个未提交文件(re-binary-core 网关挂载例外,控制器处理提交粒度)
|
||||
@@ -0,0 +1,137 @@
|
||||
# 6 个新技能设计 v2(2026-08-18)
|
||||
|
||||
## 背景
|
||||
|
||||
rev-skills(101 技能)生态对标盘点后的第二批缺口:恶意文档 / 变体对比 / 威胁狩猎 / 移动取证 / 隐写 / 浏览器扩展。用户确认全部新增。
|
||||
|
||||
设计约束(沿用全库红线与原则):
|
||||
- **红线 1 呈现中性**:禁用「最推荐」「强烈建议」等最高级强推措辞
|
||||
- **红线 2 隐私脱敏**:内容不指向具体项目/公司/产品
|
||||
- **不绑定具体工具**:方法为核心,工具为可替换示例(工具准备保留跨 OS 安装指引)
|
||||
- 工作区已干净,无未提交文件冲突
|
||||
- 当前分支 `main`
|
||||
|
||||
## 变更总览
|
||||
|
||||
| # | 新技能 | 类型 | 挂载 | 计数 |
|
||||
|---|---|---|---|---|
|
||||
| 1 | re-doc-malware | 原子 | re-malware | 102 |
|
||||
| 2 | re-variant | 原子 | re-binary-core | 103 |
|
||||
| 3 | re-hunting | 原子 | re-forensics | 104 |
|
||||
| 4 | re-mobile-forensics | 原子 | re-forensics | 105 |
|
||||
| 5 | re-stego | 原子 | re-ctf | 106 |
|
||||
| 6 | re-browser-ext | 原子 | re-managed | 107 |
|
||||
|
||||
最终:107 技能 = 1 入口 + 12 网关 + 94 原子。
|
||||
|
||||
## ① re-doc-malware(挂 re-malware)
|
||||
|
||||
- **定位**:恶意文档分析——PDF/Office 武器化、宏链、文档漏洞利用
|
||||
- **frontmatter**:触发词:恶意文档、钓鱼文档、PDF恶意、宏文档、docm、文档漏洞、恶意附件
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:钓鱼附件(PDF/Office/RTF)、文档漏洞利用样本、宏文档;不用:纯脚本宏(转 [[re-script-deob]])
|
||||
2. 工具准备——pdf-parser / peepdf(PDF 结构)、olevba / oledump(Office 宏,已有)、LibreOffice(沙箱打开验证)、7z(OLE 解包);跨 OS 安装
|
||||
3. 操作步骤——
|
||||
1. 文档类型识别(`file`:PDF/CFB OLE/RTF/OOXML zip)
|
||||
2. PDF 恶意分析(对象树、JS 动作流 openAction/AA、嵌入文件、漏洞特征——CVE 对应结构)
|
||||
3. Office 分析(宏链 AutoOpen/Workbook_Open、DDE 域、外部链接、OLE 嵌入对象)
|
||||
4. 载荷提取(脚本/URL/二进制 → [[re-script-deob]] / [[re-ioc]])
|
||||
5. 动态验证([[re-sandbox]] 内打开文档,网络隔离)
|
||||
4. 跨域联合——[[re-malware]] 网关;[[re-script-deob]];[[re-sandbox]];[[re-ioc]]
|
||||
5. 常见坑与陷阱——PDF 对象流压缩(FlateDecode 未解)、Office 宏被混淆(衔接去混淆链)、文档漏洞版本特征、沙箱检测文档(延迟执行)
|
||||
- **挂载**:re-malware 子技能列表 + 选择树分支(钓鱼附件 → [[re-doc-malware]])
|
||||
|
||||
## ② re-variant(挂 re-binary-core)
|
||||
|
||||
- **定位**:二进制变体/补丁对比——函数匹配、N-day 补丁 diff、变体溯源
|
||||
- **frontmatter**:触发词:二进制对比、补丁对比、N-day、变体分析、BinDiff、函数匹配、样本相似
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:补丁前后对比(漏洞定位)、家族变体关联、样本溯源;不用:单样本深度分析(走 re-binary-core 通用)
|
||||
2. 工具准备——BinDiff / Diaphora(IDA/Ghidra 插件,安装指引)、radiff2/rz-diff(rizin)、readelf;跨 OS 安装
|
||||
3. 操作步骤——
|
||||
1. 函数匹配(指令哈希、调用图相似度、导入导出对齐——BinDiff/Diaphora 思路)
|
||||
2. 补丁 diff(修复前后 → 变更函数定位 → 漏洞点推断)
|
||||
3. 变体溯源(家族内样本关联:相似度聚类、演进链)
|
||||
4. 输出差异清单(变更函数表 + 相似度,[[analysis-contract]] 衔接)
|
||||
4. 跨域联合——[[re-binary-core]] 网关;[[re-ghidra]] / [[re-ida]] 反编译底座
|
||||
5. 常见坑与陷阱——编译器差异干扰匹配、strip 后符号缺失、架构差异(跨架构对比降级)、大量相似导致误关联
|
||||
- **挂载**:re-binary-core 子技能列表 + 选择树分支(补丁/N-day 对比 → [[re-variant]])
|
||||
|
||||
## ③ re-hunting(挂 re-forensics)
|
||||
|
||||
- **定位**:威胁狩猎方法论——假设驱动、遥测选择、验证闭环
|
||||
- **frontmatter**:触发词:威胁狩猎、狩猎、hunting、假设驱动、遥测分析、异常检测
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:主动狩猎请求("环境里有没有 X");不用:已知样本分析([[re-behavior]])、IOC 查询([[re-ti]])
|
||||
2. 工具准备——日志分析工具(jq/grep/awk 通用)、SIEM 查询(按环境)、ATT&CK 导航;跨 OS 说明
|
||||
3. 操作步骤——
|
||||
1. 狩猎假设生成(ATT&CK 技术对齐基线、威胁情报输入 [[re-ti]])
|
||||
2. 遥测源选择(端点/网络/日志——按假设选数据源)
|
||||
3. 基线 vs 异常(统计基线、规则匹配、异常聚类)
|
||||
4. 验证闭环(命中确认——误报排除、[[re-behavior]] 深挖、证据存档 [[analysis-contract]])
|
||||
4. 跨域联合——[[re-forensics]] 网关;[[re-ti]];[[re-behavior]];[[re-ioc]]
|
||||
5. 常见坑与陷阱——基线污染(环境本身被攻陷)、遥测缺失导致盲区、误报疲劳、假设过窄
|
||||
- **挂载**:re-forensics 子技能列表
|
||||
|
||||
## ④ re-mobile-forensics(挂 re-forensics)
|
||||
|
||||
- **定位**:移动设备取证——Android/iOS 数据提取、备份解析、删除恢复
|
||||
- **frontmatter**:触发词:移动取证、手机取证、ADB备份、iTunes备份、手机数据提取
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:设备备份/镜像数据提取、应用数据取证;不用:App 逆向([[re-mobile]])、通用文件系统([[re-disk-forensics]])
|
||||
2. 工具准备——adb(Android)、libimobiledevice(iOS)、备份解析工具、sqlite3([[re-disk-forensics]] 衔接);跨 OS 安装
|
||||
3. 操作步骤——
|
||||
1. Android 提取(ADB backup 解析(ab 格式)、应用沙箱(run-as/root)、SQLite 数据库)
|
||||
2. iOS 提取(iTunes 备份解析(manifest.db)、加密备份、Keychain 条目)
|
||||
3. 删除恢复与时间线(SQLite 删除记录——[[re-disk-forensics]] 方法、应用时间线重建)
|
||||
4. 跨域联合——[[re-forensics]] 网关;[[re-disk-forensics]];[[re-mobile]] 衔接
|
||||
5. 常见坑与陷阱——加密备份无密钥、ADB backup 权限限制(应用未启用 backup)、iOS 备份字段混淆(manifest 哈希路径)、时间线时区
|
||||
- **挂载**:re-forensics 子技能列表
|
||||
|
||||
## ⑤ re-stego(挂 re-ctf)
|
||||
|
||||
- **定位**:隐写术检测与提取——LSB、文件尾附加、隐写工具链
|
||||
- **frontmatter**:触发词:隐写、stego、LSB、文件尾附加、隐写提取、图片隐写
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:隐写怀疑(CTF 题/取证对象)、文件尾异常;不用:正常文件分析(走各域技能)
|
||||
2. 工具准备——zsteg / steghide / binwalk(尾部扫描已有)/ strings / python3;跨 OS 安装
|
||||
3. 操作步骤——
|
||||
1. 文件尾附加检测(binwalk/hexdump 尾部 → 附加数据提取——衔接 [[re-patching]] 尾部附加经验)
|
||||
2. 图片 LSB(zsteg 扫描、逐位提取、通道分析)
|
||||
3. 其他载体(音频相位/频谱、文件冗余区)
|
||||
4. 提取验证(magic 检查、可读性验证)
|
||||
4. 跨域联合——[[re-ctf]] 网关;[[re-fw-extract]] 的 binwalk 复用;[[re-triage]] 初勘
|
||||
5. 常见坑与陷阱——LSB 顺序(行序/位序)、多载体误判、隐写前压缩(先提取再解压——提取物查压缩头:zlib `78 9C` / gzip `1F 8B`)、工具输出噪声
|
||||
- **挂载**:re-ctf 子技能列表
|
||||
|
||||
## ⑥ re-browser-ext(挂 re-managed)
|
||||
|
||||
- **定位**:浏览器扩展逆向——权限清单、恶意行为、混淆还原
|
||||
- **frontmatter**:触发词:浏览器扩展、Chrome扩展、Firefox扩展、恶意扩展、extension
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:扩展文件(crx/xpi/zip)、恶意扩展行为分析;不用:网页 JS([[re-script-deob]] 覆盖纯脚本)
|
||||
2. 工具准备——unzip/7z(解包)、jq(manifest 解析)、node(扩展脚本运行)、浏览器(加载验证);跨 OS 安装
|
||||
3. 操作步骤——
|
||||
1. 解包与结构(crx/xpi = zip + manifest.json,权限清单解析)
|
||||
2. 恶意行为定位(CSP 绕过、数据外泄(fetch/beacon)、权限滥用(tabs/storage/webRequest)、后台脚本)
|
||||
3. 混淆还原(衔接 [[re-script-deob]] 高级混淆对抗)
|
||||
4. 上架审查绕过面分析(动态加载、远程代码、obfuscation 检测规避)
|
||||
4. 跨域联合——[[re-managed]] 网关;[[re-script-deob]];[[re-netcap]] 网络行为衔接
|
||||
5. 常见坑与陷阱——manifest 版本差异(MV2/MV3 权限模型)、远程代码策略(MV3 禁远程 JS)、动态注入绕过静态分析、扩展沙箱与页面上下文隔离
|
||||
- **挂载**:re-managed 子技能列表 + 选择树分支(浏览器扩展 → [[re-browser-ext]])
|
||||
|
||||
## 同步
|
||||
|
||||
- 5 个网关子技能列表挂载(re-malware +1 / re-binary-core +1 / re-forensics +2 / re-ctf +1 / re-managed +1)
|
||||
- re-malware / re-binary-core / re-managed 选择树各加分支
|
||||
- rerouting A 表加 3 行:PDF/Office 宏特征 → [[re-doc-malware]];补丁/N-day 对比需求 → [[re-variant]];文件尾附加/图片异常 → [[re-stego]]
|
||||
- README:技能导航(101)→(107)、「12 大类网关 → 88 原子技能」→ 94、导航加 6 行
|
||||
- AGENTS.md:(101 个技能)→(107 个技能)、原子技能(88)→(94)
|
||||
- marketplace.json:101 个技能 → 107 个技能
|
||||
|
||||
## 校验与测试
|
||||
|
||||
- validate.mjs 自动覆盖 6 个新技能(frontmatter name=目录名 / type=atomic / 工具准备 / 链接)
|
||||
- `npm test` 全绿(107 skills validated)
|
||||
- rerouting 新增行的 [[链接]] 指向已存在技能
|
||||
- 工作区干净,无未提交文件冲突
|
||||
@@ -0,0 +1,122 @@
|
||||
# 技能库第三轮扩充设计(2026-08-20)
|
||||
|
||||
## 背景
|
||||
|
||||
107 技能覆盖审查后识别 13 个实战缺口(移动端 Flutter/RN、固件 RTOS/MCU/MIPS/TEE、语言运行时 Lua/老运行时、无线 BLE/NFC、图形 Shader、硬件侧信道、新兴 HarmonyOS)。用户定案:**全上**,融合优先——可融合的进现有技能,无自然宿主的独立成技能。
|
||||
|
||||
归位决策(用户已确认):
|
||||
- 独立 5 个:re-flutter、re-rtos、re-mips、re-tee、re-harmonyos
|
||||
- 融合 8 项进 6 个技能:re-hybrid-app(+RN/Hermes)、re-iot-proto(+BLE/+NFC)、re-game(+Lua/+Shader)、re-hw-chip(+侧信道)、re-fw-extract(+MCU)、re-format-pe(+Delphi/VB6)
|
||||
|
||||
总数 107 → **112**(5 新增 + 107)。
|
||||
|
||||
## 变更总览
|
||||
|
||||
| # | 类型 | 目标 | 内容 |
|
||||
|---|---|---|---|
|
||||
| 1 | 新增 | re-flutter | Flutter/Dart AOT 逆向(libapp.so、AOT snapshot、Dart 符号定位) |
|
||||
| 2 | 新增 | re-rtos | RTOS 结构分析(FreeRTOS/ThreadX/Zephyr:TCB/任务表/内核对象) |
|
||||
| 3 | 新增 | re-mips | MIPS ISA + 路由器固件逆向 |
|
||||
| 4 | 新增 | re-tee | TEE/TrustZone(OP-TEE、Trusted App、SMC 接口) |
|
||||
| 5 | 新增 | re-harmonyos | HarmonyOS(hap 包、ArkTS 字节码) |
|
||||
| 6 | 融合 | re-hybrid-app | +React Native/Hermes 字节码章节 |
|
||||
| 7 | 融合 | re-iot-proto | +BLE 链路层章节 +NFC/智能卡章节 |
|
||||
| 8 | 融合 | re-game | +Lua/LuaJIT 字节码章节 +Shader 反汇编章节 |
|
||||
| 9 | 融合 | re-hw-chip | +侧信道/故障注入章节 |
|
||||
| 10 | 融合 | re-fw-extract | +MCU 镜像分析章节(8051/AVR/PIC) |
|
||||
| 11 | 融合 | re-format-pe | +Delphi/VB6 老运行时识别章节 |
|
||||
|
||||
## 新增技能边界(实现者大纲)
|
||||
|
||||
### re-flutter(原子,挂 re-mobile 组)
|
||||
|
||||
- 用:Flutter App(Android `libapp.so` / iOS `App.framework`、`libflutter.so`、`kernel_blob.bin`);不用:纯原生 App(走 re-apk/re-ios)
|
||||
- 核心内容:Dart AOT snapshot 结构(blobs 分区:ObjCode/rodata/instructions/strings)、字符串定位与交叉引用、Dart 符号还原(`--split-debug-info` 的 symbol 映射文件)、引擎与业务代码区分、Flutter 特有混淆(tree-shaking 后的名字处理)
|
||||
- 工具:无官方 Dart 反编译器——blob 手动解析、`strings`+IDA/Ghidra 配合、动态侧 frida hook Dart VM 入口(`Dart_CreateRootLibrary`/`dart:...` 库注册点)或 Dart VM Service
|
||||
- 跨域:[[re-apk]] [[re-ios]] [[re-mobile]] [[re-frida]] [[re-hybrid-app]]
|
||||
|
||||
### re-rtos(原子,挂 re-firmware 组)
|
||||
|
||||
- 用:MCU/IoT 固件跑 RTOS(FreeRTOS/ThreadX/Zephyr/RT-Thread);不用:裸机固件(MCU 镜像节,见 re-fw-extract)
|
||||
- 核心内容:RTOS 识别(启动代码 → 调度器入口 `osKernelStart`/`xTaskCreate` 链)、TCB/任务表结构定位(FreeRTOS `pxCurrentTCB` 静态表、ThreadX 双向链表、Zephyr `_kernel` 结构)、任务栈识别、内核对象(队列/信号量/互斥)定位、按任务拆分反编译
|
||||
- 跨域:[[re-fw-extract]] [[re-fw-emulate]] [[re-binary-core]] [[re-mcu]]
|
||||
|
||||
### re-mips(原子,挂 re-binary-core 组)
|
||||
|
||||
- 用:MIPS 固件/恶意软件(路由器、嵌入式);不用:ARM/x86 系(走 re-binary-core 通用)
|
||||
- 核心内容:MIPS32/64 调用约定与**延迟槽**(坑)、GP 相对寻址/重定位、反编译注意(伪指令、`$ra` 链)、路由器固件 web 后端分析(httpd 认证/命令注入模式)、busybox 集成命令识别
|
||||
- 跨域:[[re-fw-extract]] [[re-fw-rootfs]] [[re-binary-core]] [[re-ghidra]] [[re-vuln]]
|
||||
|
||||
### re-tee(原子,挂 re-mobile 组或 re-firmware 组,实现时定)
|
||||
|
||||
- 用:TrustZone/OP-TEE、Trusted App、secure storage、设备密钥相关逆向;不用:普通内核(re-kernel 是 Windows 侧)
|
||||
- 核心内容:TEE 架构(normal/secure world 划分、SMC 接口、EL0-EL3)、OP-TEE 结构(core 与 TA 分离、`.ta` 二进制格式)、Trusted App 分析(入口/命令分发/secure storage 对象)、主机侧调用面(ioctl/`TEE_IOC`)、常见厂商 TEE 差异
|
||||
- 跨域:[[re-fw-extract]] [[re-kernel]] [[re-mobile]] [[re-hw-chip]]
|
||||
|
||||
### re-harmonyos(原子,挂 re-mobile 组)
|
||||
|
||||
- 用:鸿蒙 App(hap/hsp/har 包)、ArkTS 字节码;不用:普通 Android(re-apk)
|
||||
- 核心内容:hap 包结构(与 APK 同源:resources/index、ets/ 目录、module.json)、ArkCompiler 字节码(`.abc`)特征与反汇编思路、JS/TS 业务资源提取、与 Android 工具链的复用与差异(jadx 思路可借鉴、dex 层不存在)
|
||||
- 跨域:[[re-apk]] [[re-hybrid-app]] [[re-java]] [[re-mobile]]
|
||||
|
||||
## 融合内容清单(实现者大纲)
|
||||
|
||||
### re-hybrid-app +1 章(React Native / Hermes)
|
||||
|
||||
- `.hbc` 字节码识别(文件头 `c61fbc03` 类魔数)、Hermes 反汇编(hermesc 系)、JS bundle 提取(Metro 打包结构)、RN 原生桥接(NativeModules)定位
|
||||
- 既有 Flutter 名义覆盖补一句指向 [[re-flutter]](不重复内容)
|
||||
|
||||
### re-iot-proto +2 章(BLE / NFC)
|
||||
|
||||
- BLE:链路层嗅探(nRF 系硬件/软件抓包)、广播包与连接事件解析、配对/加密协商(LE Legacy / Secure Connections)、GATT 服务与特征枚举
|
||||
- NFC/智能卡:ISO14443 帧、APDU 交互、MIFARE Classic(Crypto-1 弱点)、proxmark3 类设备流程
|
||||
|
||||
### re-game +2 章(Lua / Shader)
|
||||
|
||||
- Lua:Lua/LuaJIT 字节码识别与反汇编(luac 系)、Cocos 系游戏脚本资源提取(jsc/luac 混淆变体)、脚本函数 hook([[re-frida]] 或游戏内存侧)
|
||||
- Shader:SPIR-V(spirv-dis)、DXIL/DXBC 反汇编、GLSL 还原(spirv-cross 类)、找渲染入口与着色器常量
|
||||
|
||||
### re-hw-chip +1 章(侧信道/故障注入)
|
||||
|
||||
- SPA/DPA 功耗分析基础、采集设备与流程(chipwhisperer 类)、时钟/电压故障注入、glitch 定位与重放、与去封装工序衔接
|
||||
|
||||
### re-fw-extract +1 章(MCU 镜像)
|
||||
|
||||
- MCU 程序镜像格式(Intel HEX/bin)、向量表与熔丝位识别、8051/AVR/PIC/MSP430 的 Ghidra 处理器模块反汇编、与 RTOS 技能衔接(跑 RTOS 的固件 → [[re-rtos]])
|
||||
|
||||
### re-format-pe +1 章(老运行时识别)
|
||||
|
||||
- Delphi VCL:RTTI 结构、类表/vmt 定位、Borland 资源段特征
|
||||
- VB6:MSVBVM60 运行时特征、资源特征定位入口
|
||||
- 老壳注意(PECompact 类)与 [[re-packer-id]] 衔接
|
||||
|
||||
## 同步项(融合/新增波及)
|
||||
|
||||
1. **计数 107 → 112**:package.json description、`.claude-plugin/marketplace.json` 两处 description、README 首段
|
||||
2. **README 技能导航**:新技能挂组(re-flutter→re-mobile 组、re-rtos→re-firmware 组、re-mips→re-binary-core 组、re-tee→re-firmware 组(实现时定)、re-harmonyos→re-mobile 组)
|
||||
3. **re-analyze/references/triage.md**:移动 App 路径补 re-flutter/re-harmonyos 引用;固件路径补 re-rtos
|
||||
4. **re-mobile 网关子技能清单**:+[[re-flutter]] +[[re-harmonyos]]
|
||||
5. **re-feedback 无关**(不触碰)
|
||||
6. marketplace.json 版本保持 0.0.2(永久版本策略,内容更新不 bump)
|
||||
|
||||
## 规则(沿用全库红线)
|
||||
|
||||
- 红线 1 呈现中性:禁用「最推荐」「强烈建议」等最高级强推措辞,最多「推荐」
|
||||
- 红线 2 隐私脱敏:不指向具体项目/公司/产品
|
||||
- 不绑定具体工具:方法为核心,工具为可替换示例;「工具准备」按模板给跨 OS 安装命令(硬件类给选购指引)
|
||||
- 新技能 type=atomic、frontmatter name=目录名、必须有「## 工具准备」、[[链接]] 指向存在的技能或 references 文件名
|
||||
- 通用方法论进 re-analyze/references(如 MIPS 延迟槽若属通用二进制知识可进 platform-tips 的链接,技能内保留专有内容)
|
||||
|
||||
## 校验与测试
|
||||
|
||||
- 每任务完成后 `npm test` 全绿(112 skills)
|
||||
- `claude plugin validate .` 通过(marketplace.json 未动结构,只改 description 文本)
|
||||
- 无 [[死链]]
|
||||
- 红线 2 逐条对照(新增内容无具体指代)
|
||||
- 工作区未提交文件谨慎处理(git add 只加任务文件)
|
||||
|
||||
## 范围外
|
||||
|
||||
- 不新增网关技能(12 网关结构不变)
|
||||
- 不触碰 reverse-skill 机制层(沿用上轮结论)
|
||||
- 游戏机(Switch/PS)等法律灰区不涉
|
||||
@@ -0,0 +1,71 @@
|
||||
# zws 收藏库经验吸收设计(2026-08-20)
|
||||
|
||||
## 背景
|
||||
|
||||
收藏型 GitHub 账号 `123456789zws`(4432 个 fork,全 RE 主题)暴露了中文 RE 圈的高密度工具/技能索引。从中挑选 7 个高价值仓库克隆并深挖(素材挖掘 7 代理完成,产出 99 条候选,存于 /home/DslsDZC/rev-refs/extract-zws-*.md,均已脱敏)。
|
||||
|
||||
用户决策:**全吸收**。
|
||||
|
||||
## 素材清单与许可分级
|
||||
|
||||
| 素材 | 许可 | 候选数 | 吸收规则 |
|
||||
|---|---|---|---|
|
||||
| reverse-skills(inliver233) | MIT | 28 | 注明来源吸收 |
|
||||
| ReVa(cyberkaida) | Apache-2.0 | 15 | 注明来源吸收 |
|
||||
| hermes-decomp(SymbioticSec) | MIT | 16 | 注明来源吸收 |
|
||||
| Cpp2IL(SamboyCoding) | MIT | 9 | 注明来源吸收 |
|
||||
| chernobog(19h) | 无许可 | 16 | 只蒸馏,不注源 |
|
||||
| pyarmor-research(Fadi002) | 无许可 | 10 | 只蒸馏,不注源 |
|
||||
| LazyReverse(a0yami) | MIT | 5 | 注明来源吸收 |
|
||||
|
||||
## 变更总览(99 候选 → 裁剪 ~40 入库)
|
||||
|
||||
| # | 目标技能 | 素材 | 吸收条目(执行时查重裁剪) |
|
||||
|---|---|---|---|
|
||||
| 1 | re-flutter | reverse-skills | 对象池 VLE 反序列化(条目4)、字符串双编码(5)、池槽→.text xref 桥(6)、cid 虚拟分派墙(7)、Dart AOT ABI/bool 编码(8)、Dart False≠0 patch 陷阱(10)、弹窗三源分诊(13)、平台通道 stub 陷阱(14)、万级函数分诊(17)、状态链追踪(18)→ 挑 6-8 条 |
|
||||
| 2 | re-hybrid-app | hermes-decomp | 函数表/边界定位(2)、字符串表解析(3)、版本化指令集(5)、寄存器→变量还原(7)、转译产物去抽象(10)、Metro 模块层(11)、字节码写回补丁(14)、已知限制(15)→ 挑 5-7 条 |
|
||||
| 3 | re-script-deob | hermes-decomp | 转译去抽象(10 兼)、写回补丁(14 兼)→ 1-2 条 |
|
||||
| 4 | re-game | Cpp2IL | 双文件结构模型(1)、版本识别考古(2)、注册结构定位(3)、篡改对抗(5)、反编译管线(6)、已知限制(8)→ 挑 4-5 条 |
|
||||
| 5 | re-deobfuscate | chernobog | dispatcher 识别(1)、Z3 状态机求解(3)、CFG 重构护栏(5)、不透明谓词证据纪律(8)、LLM 编排纪律(12/13)、混合分析(14/15)→ 查重后挑 4-6 条 |
|
||||
| 6 | re-python | pyarmor-research | 保护模型(1)、载体识别(2)、密钥派生还原(3)、marshal 重建(5)、运行时解密窗口(7)、版本差异(9)→ 挑 4-5 条 |
|
||||
| 7 | re-patching | reverse-skills | patch 四原语(9)、爆炸半径(11)、safe-NOP(12)→ 2-3 条 |
|
||||
| 8 | re-mobile-pack | reverse-skills | 加固识别/重打包黑屏(20)、三条交付路径(21)→ 2 条 |
|
||||
| 9 | re-apk | reverse-skills | repack 闭环(19)、签名校验链(25)→ 2 条 |
|
||||
| 10 | re-frida | reverse-skills | 测试环境决策树(22)、redroid 搭建(23)、Frida 流程(24)→ 2-3 条 |
|
||||
| 11 | re-analyze references | ReVa | 工具粒度(1)、schema 宽容(2)、错误重定向(3)、context rot 抑制(4)、后台作业+轮询游标(8)、脚本逃逸舱(13)、证据纪律(10)→ 3-5 条(进 references 或坑) |
|
||||
| 12 | re-dotnet | LazyReverse | dnSpy 无头批量(1)→ 1 条 |
|
||||
| 13 | re-ida | LazyReverse | IDA 无头批量(2)→ 1 条 |
|
||||
| 14 | re-feedback | reverse-skills | 工具前置断言(26)、多代理协作(27)→ 1-2 条 |
|
||||
|
||||
## 吸收格式与规则
|
||||
|
||||
**坑格式**:`**标题**:现象——…;原因——…;对策——…`(与全库体例一致,追加进「## 常见坑与陷阱」)
|
||||
|
||||
**查重规则**:入库前 `grep -n <关键词> <目标技能>/SKILL.md`(含 references/);同现象已存在 → 跳过;内容更完整的深化版本 → 合并。re-deobfuscate 覆盖已高,执行时最严格。
|
||||
|
||||
**来源注明**(仅 MIT/Apache 素材):
|
||||
- reverse-skills → `(来源:reverse-skills(inliver233),MIT)`
|
||||
- ReVa → `(来源:ReVa(cyberkaida),Apache-2.0)`
|
||||
- hermes-decomp → `(来源:hermes-decomp(SymbioticSec),MIT)`
|
||||
- Cpp2IL → `(来源:Cpp2IL(SamboyCoding),MIT)`
|
||||
- LazyReverse → `(来源:LazyReverse(a0yami),MIT)`
|
||||
- chernobog / pyarmor-research → 不注源(无许可蒸馏)
|
||||
|
||||
**改写规则**:不逐字复制——按现象/原因/对策改写;素材已脱敏,入库时再逐条对照红线 2(无具体项目/公司/产品暗示)
|
||||
|
||||
## 红线(沿用全库)
|
||||
|
||||
- 红线 1 呈现中性:禁「最推荐/强烈建议」,最多「推荐」
|
||||
- 红线 2 隐私脱敏:素材已脱敏,入库抽查
|
||||
- 不绑定具体工具:方法为核心;工具名(blutter/capstone/frida/dnSpy/IDA 等公开工具)可保留
|
||||
- 每条入库后 `npm test` 全绿(112 不变——融合吸收不改技能数)
|
||||
|
||||
## 校验
|
||||
|
||||
- 每任务:查重 → 追加坑条目(+来源注明)→ 脱敏对照 → npm test → commit
|
||||
- 终审:全波次复核 + 技术事实抽查(VLE 编码、Hermes 位域头、IL2CPP metadata 版本、CFF dispatcher、PyArmor 运行时、ReVa 工具设计)
|
||||
|
||||
## 范围外
|
||||
|
||||
- 不新增技能(全部融合进现有技能与 references)
|
||||
- MCP 服务类仓库(reversing-mcp 等收藏)——本轮只吸收方法论,不引入 MCP 工具绑定
|
||||
@@ -0,0 +1,79 @@
|
||||
# 技能库深度扩充设计(深度波)
|
||||
|
||||
日期:2026-08-25
|
||||
状态:已获用户批准(2026-08-25 逐节确认)
|
||||
|
||||
## 1. 总览
|
||||
|
||||
**目标**:给现有全部技能加深度——薄技能正文扩写至基线 + 全部技能按类型配 references/ 深度文件(每技能 2 个)。
|
||||
|
||||
**已确认决策**:
|
||||
1. 形态:两者结合(正文扩写 + references/ 深度文件)
|
||||
2. 范围:分层滚动(T1/T2/T3,网关正文不动)
|
||||
3. 粒度:按技能类型多文件(每技能 2 个,主题命名)
|
||||
4. 流程:样板先行(2 个样板定调后批量)
|
||||
5. 实现方案:A(类型映射表 + 技能簇任务)
|
||||
|
||||
**范围**:112 个现有技能(v4 的 6 新技能 + re-rtos/re-behavior 标注「待 v4 落地后套用」,不在本设计内重复设计)。技能计数不变:112(v4 落地后 118)。深度文件总量约 220 个。
|
||||
|
||||
## 2. 分层范围
|
||||
|
||||
| 分层 | 判定 | 产出 | 规模 |
|
||||
|---|---|---|---|
|
||||
| T1 | 原子技能 SKILL.md <100 行 | 正文扩写至 ~130 行基线 + 2 个深度文件 | 约 18 技能 |
|
||||
| T2 | 原子技能 100-130 行 | 正文适度补强(补缺章/示例/坑,无硬基线)+ 关键者配深度文件 | 48 技能 |
|
||||
| T3 | 原子技能 >130 行 | 只补深度文件(尚无者) | 约 33 技能 |
|
||||
| 网关(12+1) | 编排器设计使然 | 正文不动(re-analyze 已有 references/ 不动) | 13 |
|
||||
|
||||
行数按 2026-08-25 实测(`wc -l .claude/skills/*/SKILL.md`,中位 99 行;86-130 行共 62 个)。T1/T3 为约数,精确清单由实施计划首个任务(映射表)产出并确认。
|
||||
|
||||
**关键者判定规则**(T2 内):跨域引用数 ≥ 2,或被网关子技能清单 / triage 路由直接引用,或与 T1 相邻主题(如 re-rtos 与 T1 的 re-tee 同簇)。
|
||||
|
||||
## 3. 类型-文件集映射
|
||||
|
||||
每技能 2 个 references/ 文件,主题命名对齐 frida-scripts.md 惯例;`[[链接]]` 目标 = 文件名去扩展名(validate 既有支持)。
|
||||
|
||||
| 类型 | 文件集 | 内容骨架 | 代表技能(示例) |
|
||||
|---|---|---|---|
|
||||
| 工具类 | `commands.md` + `gotchas.md` | 命令速查/常用操作序列/组合套路;工具特有坑/版本差异/边界 | ghidra / ida / radare2 / gdb / lldb / x64dbg / windbg / binaryninja / angr / z3 / netcap / frida / tracing / sandbox / ti / sdr / mem-forensics / emulation / fw-emulate / plugin-dev / apk(jadx/apktool 为主) |
|
||||
| 格式类 | `layout.md` + `examples.md` | 结构图/字段表/布局与偏移;最小解析示例/字节样例/字段对照 | format-pe / format-elf / format-macho / wasm / cpp-abi / go / rust / nim / zig / swift / fp-runtime / flutter / hybrid-app / harmonyos / python / dotnet / java / rtos / mips / uefi / crypto-id / blockchain / drm / whitebox / mobile-pack |
|
||||
| 方法论类 | `decision-tree.md` + `gotchas.md` | 场景决策树/分支逻辑/证据分级;方法论坑/边界/反例 | behavior / hunting / attribution / proto-rev / ioc / anti-cheat / evasion / fileless / ransomware / loader / doc-malware / browser-ext / keygen / license / patching / variant / deobfuscate / unpack-simple / unpack-advanced / stego / fuzzing / crash-triage / exploit / pwn / shellcode / kernel / hypervisor |
|
||||
| 领域混合类 | 取主类型文件集 | 判定规则:按技能主属性归类(场景为主取主类型;工具密集取工具类) | ics / iot-proto / automotive / hardware-io / hw-chip / tee / game / macos / ios / ios-jb / android-native / mobile-forensics / disk-forensics / memdump / triage / fw-extract / fw-rootfs / crypto-decrypt / crypto-keys / a-model / a-attack / stego 等 |
|
||||
|
||||
**完整映射表**(112 技能 → 类型 × 分层 → 所属簇任务)由实施计划首个任务产出并确认,本设计定规则与形态。
|
||||
|
||||
## 4. 任务结构
|
||||
|
||||
任务队列(每任务 = 实现 → 事实核验(必要时 web)→ 红线对照 → `npm test` → commit 只 add 本任务文件):
|
||||
|
||||
1. **映射表任务**:产出 112 技能的类型×分层映射表(设计附录,供后续任务引用)
|
||||
2. **样板任务**:re-x64dbg(工具类)+ re-format-elf(格式类)完整深度产出 → 提交后用户审阅定调
|
||||
3. **T1 批次**(约 18 技能 → 4-5 个簇任务):正文扩写至 ~130 行基线 + 2 个深度文件;簇按「类型 × 主题相邻」划分(如 T1 工具类簇、T1 格式类簇…)
|
||||
4. **T2 批次**(48 技能 → 10-12 个簇任务):正文补强 + 关键者(判定规则见第 2 节)配深度文件
|
||||
5. **T3 批次**(约 33 技能 → 6-7 个簇任务):只补深度文件
|
||||
6. **re-rtos / re-behavior**:深度产出放队列末尾(v4 落地后套用)
|
||||
7. **终审波**:全库 references 死链/计数/事实抽查/红线对照
|
||||
|
||||
**样板审阅要点**:正文扩写密度与风格、深度文件骨架与命名、命令/示例颗粒度;定调后批量任务按样板同构执行。
|
||||
|
||||
## 5. 质量闸口与验证
|
||||
|
||||
- validate.mjs:references/*.md 文件名(去扩展名)为合法 `[[链接]]` 目标;SKILL.md `[[链接]]` 必须解析(深度文件内引用其他技能必须指向存在目标)
|
||||
- 正文扩写不破坏 frontmatter(`name`=目录名、`description` 非空、`type: atomic` 必含「## 工具准备」)与固定五节结构
|
||||
- 事实核验:命令/字段/格式断言以官方文档为准(命令必须可执行;字段名以本机输出验证的写法沿用仓库惯例);抽查机制进终审波
|
||||
- 红线:呈现中性(禁「最推荐/强烈建议」)/ 隐私脱敏(不指具体项目/公司/产品)/ 不绑定具体工具(跨 OS 安装命令)
|
||||
- 每任务 `npm test`;深度波不改技能计数(112 → v4 后 118 由 v4 负责)
|
||||
|
||||
## 6. 与 v4 并行协调
|
||||
|
||||
- 两个计划独立任务队列、独立 commit、独立评审
|
||||
- 文件集隔离:v4 只碰 6 新技能目录 + re-rtos/re-behavior/triage/rerouting/计数文件;深度波只碰其余约 104 个现有技能的 SKILL.md 与 references/(re-rtos/re-behavior 深度产出在 v4 落地后套用)
|
||||
- 并行执行方式:两计划均按 subagent-driven-development 思路推进(计划内任务串行、两计划间并行),git 冲突面为零
|
||||
- 计数同步只由 v4 负责;深度波每任务 `npm test` 输出一致
|
||||
|
||||
## 7. 产出物清单
|
||||
|
||||
- 约 220 个 references/ 深度文件(commands/gotchas/layout/examples/decision-tree)
|
||||
- 约 80 个 SKILL.md 正文扩写/补强(T1 全量 + T2 适度)
|
||||
- 映射表设计附录(112 技能 × 类型 × 分层)
|
||||
- 技能计数保持 112(v4 后 118)
|
||||
@@ -0,0 +1,171 @@
|
||||
# 深度波映射表:技能 × 类型 × 分层(2026-08-25)
|
||||
|
||||
> 设计附录(design: `docs/superpowers/specs/2026-08-25-depth-wave-design.md` §2 分层判定、§3 类型-文件集映射与关键者规则)。本表由深度波实施计划任务 1 产出,是后续每个簇任务的成员与文件集依据。
|
||||
|
||||
## 0. 生成依据与方法
|
||||
|
||||
- 行数:`wc -l .claude/skills/*/SKILL.md` 实测(2026-08-25,任务执行时基线;中位 99 行,86-130 行 62 个(112 技能基线;re-arm 落地后 86-130 行 63 个)
|
||||
- 分层判定(设计 §2):T1 原子技能 <100 行;T2 100-130 行;T3 >130 行;网关 13 个(编排器,正文不动)。设计 §2 中 T1≈18/T3≈33 为约数,精确清单以本表为准
|
||||
- 类型判定(设计 §3):工具 / 格式 / 方法论 三类主类型;领域混合技能按主属性取主类型(场景为主取主类型;工具密集取工具类),最终类型直接决定文件集
|
||||
- 关键者判定(设计 §2,仅 T2 内):跨域引用数 ≥ 2(grep 全库 `[[链接]]` 引用图按网关子技能域归属计跨域,含网关与 triage 的引用;被网关子技能清单 / triage 路由直接引用的技能均已计入该数)
|
||||
- v4 并行:任务执行时 v4 新技能 re-arm 已落地,纳入本表并标注「v4 新增」;其余 v4 技能(re-riscv/re-console/re-electron/re-javacard/re-ebpf)生成时未落地,落地后由 v4 接入。当前实测技能总数 113,`node validate.mjs` → `OK: 113 skills validated`
|
||||
- 队列末尾(设计 §4.6):re-rtos / re-behavior 深度产出放队列末尾(v4 落地后套用),分层与类型照常判定
|
||||
|
||||
## 1. 类型-文件集对照(设计 §3)
|
||||
|
||||
| 类型 | 文件集 | 内容骨架 |
|
||||
|---|---|---|
|
||||
| 工具 | `references/commands.md` + `references/gotchas.md` | 命令速查/操作序列;工具坑/版本差异 |
|
||||
| 格式 | `references/layout.md` + `references/examples.md` | 结构图/字段表/布局偏移;解析示例/字节样例 |
|
||||
| 方法论 | `references/decision-tree.md` + `references/gotchas.md` | 场景决策树/证据分级;方法论坑/边界 |
|
||||
| 网关 | —(正文不动) | 编排器(re-analyze 已有 references/ 不动) |
|
||||
|
||||
## 2. 全量映射表
|
||||
|
||||
### 2.1 网关(13)
|
||||
|
||||
| 技能 | 行数 | 分层 | 类型 | 文件集 | 备注 |
|
||||
|---|---|---|---|---|---|
|
||||
| re-analyze | 84 | 网关 | 网关 | —(正文不动;re-analyze 已有 references/ 不动) | |
|
||||
| re-anti-analysis | 200 | 网关 | 网关 | —(正文不动;re-analyze 已有 references/ 不动) | |
|
||||
| re-binary-core | 152 | 网关 | 网关 | —(正文不动;re-analyze 已有 references/ 不动) | |
|
||||
| re-cracking | 62 | 网关 | 网关 | —(正文不动;re-analyze 已有 references/ 不动) | |
|
||||
| re-ctf | 67 | 网关 | 网关 | —(正文不动;re-analyze 已有 references/ 不动) | |
|
||||
| re-feedback | 57 | 网关 | 网关 | —(正文不动;re-analyze 已有 references/ 不动) | |
|
||||
| re-firmware | 49 | 网关 | 网关 | —(正文不动;re-analyze 已有 references/ 不动) | |
|
||||
| re-forensics | 54 | 网关 | 网关 | —(正文不动;re-analyze 已有 references/ 不动) | |
|
||||
| re-malware | 49 | 网关 | 网关 | —(正文不动;re-analyze 已有 references/ 不动) | |
|
||||
| re-managed | 58 | 网关 | 网关 | —(正文不动;re-analyze 已有 references/ 不动) | |
|
||||
| re-mobile | 62 | 网关 | 网关 | —(正文不动;re-analyze 已有 references/ 不动) | |
|
||||
| re-protocol | 65 | 网关 | 网关 | —(正文不动;re-analyze 已有 references/ 不动) | |
|
||||
| re-vuln | 68 | 网关 | 网关 | —(正文不动;re-analyze 已有 references/ 不动) | |
|
||||
|
||||
### 2.2 T1(28,<100 行)
|
||||
|
||||
| 技能 | 行数 | 分层 | 类型 | 文件集 | 备注 |
|
||||
|---|---|---|---|---|---|
|
||||
| re-ai-attack | 72 | T1 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-attribution | 79 | T1 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-binaryninja | 82 | T1 | 工具 | commands.md + gotchas.md | |
|
||||
| re-browser-ext | 73 | T1 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-doc-malware | 93 | T1 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-drm | 92 | T1 | 格式 | layout.md + examples.md | |
|
||||
| re-format-macho | 93 | T1 | 格式 | layout.md + examples.md | |
|
||||
| re-fp-runtime | 73 | T1 | 格式 | layout.md + examples.md | |
|
||||
| re-frida-script-author | 86 | T1 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-hunting | 70 | T1 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-ida | 99 | T1 | 工具 | commands.md + gotchas.md | |
|
||||
| re-kernel | 87 | T1 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-keygen | 90 | T1 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-license | 98 | T1 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-lldb | 96 | T1 | 工具 | commands.md + gotchas.md | |
|
||||
| re-macos | 94 | T1 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-mobile-forensics | 74 | T1 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-nim | 63 | T1 | 格式 | layout.md + examples.md | |
|
||||
| re-radare2 | 97 | T1 | 工具 | commands.md + gotchas.md | |
|
||||
| re-rtos | 99 | T1 | 格式 | layout.md + examples.md | 深度产出放队列末尾(设计 §4.6,v4 落地后套用) |
|
||||
| re-sdr | 80 | T1 | 工具 | commands.md + gotchas.md | |
|
||||
| re-stego | 80 | T1 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-swift | 80 | T1 | 格式 | layout.md + examples.md | |
|
||||
| re-tee | 99 | T1 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-variant | 74 | T1 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-windbg | 86 | T1 | 工具 | commands.md + gotchas.md | |
|
||||
| re-x64dbg | 85 | T1 | 工具 | commands.md + gotchas.md | |
|
||||
| re-zig | 69 | T1 | 格式 | layout.md + examples.md | |
|
||||
|
||||
### 2.3 T2(49,100-130 行)
|
||||
|
||||
| 技能 | 行数 | 分层 | 类型 | 文件集 | 备注 |
|
||||
|---|---|---|---|---|---|
|
||||
| re-angr | 122 | T2 | 工具 | commands.md + gotchas.md | 关键者(跨域引用 4:grep 实测) |
|
||||
| re-anti-cheat | 104 | T2 | 方法论 | decision-tree.md + gotchas.md | 非关键者(跨域引用 0) |
|
||||
| re-apk | 118 | T2 | 工具 | commands.md + gotchas.md | 关键者(跨域引用 7:grep 实测) |
|
||||
| re-arm | 129 | T2 | 格式 | layout.md + examples.md | v4 新增;非关键者(跨域引用 0) |
|
||||
| re-behavior | 119 | T2 | 方法论 | decision-tree.md + gotchas.md | 深度产出放队列末尾(设计 §4.6,v4 落地后套用);关键者(跨域引用 10:grep 实测) |
|
||||
| re-cpp-abi | 104 | T2 | 格式 | layout.md + examples.md | 非关键者(跨域引用 1) |
|
||||
| re-crash-triage | 127 | T2 | 方法论 | decision-tree.md + gotchas.md | 关键者(跨域引用 2:grep 实测) |
|
||||
| re-crypto-decrypt | 118 | T2 | 方法论 | decision-tree.md + gotchas.md | 关键者(跨域引用 16:grep 实测) |
|
||||
| re-crypto-keys | 122 | T2 | 方法论 | decision-tree.md + gotchas.md | 关键者(跨域引用 11:grep 实测) |
|
||||
| re-deobfuscate | 124 | T2 | 方法论 | decision-tree.md + gotchas.md | 关键者(跨域引用 9:grep 实测) |
|
||||
| re-dotnet | 122 | T2 | 格式 | layout.md + examples.md | 非关键者(跨域引用 1) |
|
||||
| re-emulation | 106 | T2 | 工具 | commands.md + gotchas.md | 关键者(跨域引用 3:grep 实测) |
|
||||
| re-evasion | 113 | T2 | 方法论 | decision-tree.md + gotchas.md | 关键者(跨域引用 4:grep 实测) |
|
||||
| re-exploit | 129 | T2 | 方法论 | decision-tree.md + gotchas.md | 非关键者(跨域引用 1) |
|
||||
| re-fileless | 116 | T2 | 方法论 | decision-tree.md + gotchas.md | 非关键者(跨域引用 0) |
|
||||
| re-format-elf | 113 | T2 | 格式 | layout.md + examples.md | 关键者(跨域引用 14:grep 实测) |
|
||||
| re-fw-emulate | 110 | T2 | 工具 | commands.md + gotchas.md | 关键者(跨域引用 5:grep 实测) |
|
||||
| re-fw-rootfs | 124 | T2 | 方法论 | decision-tree.md + gotchas.md | 关键者(跨域引用 3:grep 实测) |
|
||||
| re-gdb | 114 | T2 | 工具 | commands.md + gotchas.md | 关键者(跨域引用 20:grep 实测) |
|
||||
| re-ghidra | 115 | T2 | 工具 | commands.md + gotchas.md | 关键者(跨域引用 47:grep 实测) |
|
||||
| re-go | 120 | T2 | 格式 | layout.md + examples.md | 非关键者(跨域引用 0) |
|
||||
| re-hardware-io | 107 | T2 | 工具 | commands.md + gotchas.md | 关键者(跨域引用 4:grep 实测) |
|
||||
| re-harmonyos | 102 | T2 | 格式 | layout.md + examples.md | 非关键者(跨域引用 0) |
|
||||
| re-hw-chip | 118 | T2 | 方法论 | decision-tree.md + gotchas.md | 关键者(跨域引用 2:grep 实测) |
|
||||
| re-hypervisor | 120 | T2 | 方法论 | decision-tree.md + gotchas.md | 非关键者(跨域引用 0) |
|
||||
| re-ics | 113 | T2 | 方法论 | decision-tree.md + gotchas.md | 非关键者(跨域引用 1) |
|
||||
| re-imports | 117 | T2 | 格式 | layout.md + examples.md | 关键者(跨域引用 6:grep 实测) |
|
||||
| re-ioc | 116 | T2 | 方法论 | decision-tree.md + gotchas.md | 关键者(跨域引用 28:grep 实测) |
|
||||
| re-ios | 109 | T2 | 工具 | commands.md + gotchas.md | 关键者(跨域引用 4:grep 实测) |
|
||||
| re-java | 118 | T2 | 格式 | layout.md + examples.md | 非关键者(跨域引用 1) |
|
||||
| re-loader | 118 | T2 | 方法论 | decision-tree.md + gotchas.md | 非关键者(跨域引用 0) |
|
||||
| re-mem-forensics | 106 | T2 | 工具 | commands.md + gotchas.md | 非关键者(跨域引用 1) |
|
||||
| re-memdump | 121 | T2 | 工具 | commands.md + gotchas.md | 关键者(跨域引用 29:grep 实测) |
|
||||
| re-mips | 115 | T2 | 格式 | layout.md + examples.md | 非关键者(跨域引用 0) |
|
||||
| re-mobile-pack | 118 | T2 | 格式 | layout.md + examples.md | 非关键者(跨域引用 0) |
|
||||
| re-netcap | 124 | T2 | 工具 | commands.md + gotchas.md | 关键者(跨域引用 13:grep 实测) |
|
||||
| re-patching | 110 | T2 | 方法论 | decision-tree.md + gotchas.md | 关键者(跨域引用 5:grep 实测) |
|
||||
| re-plugin-dev | 103 | T2 | 工具 | commands.md + gotchas.md | 非关键者(跨域引用 0) |
|
||||
| re-python | 107 | T2 | 格式 | layout.md + examples.md | 关键者(跨域引用 3:grep 实测) |
|
||||
| re-ransomware | 102 | T2 | 方法论 | decision-tree.md + gotchas.md | 非关键者(跨域引用 0) |
|
||||
| re-rust | 117 | T2 | 格式 | layout.md + examples.md | 非关键者(跨域引用 0) |
|
||||
| re-sandbox | 128 | T2 | 工具 | commands.md + gotchas.md | 关键者(跨域引用 48:grep 实测) |
|
||||
| re-ti | 117 | T2 | 工具 | commands.md + gotchas.md | 关键者(跨域引用 2:grep 实测) |
|
||||
| re-tracing | 106 | T2 | 工具 | commands.md + gotchas.md | 关键者(跨域引用 14:grep 实测) |
|
||||
| re-unpack-advanced | 103 | T2 | 方法论 | decision-tree.md + gotchas.md | 关键者(跨域引用 5:grep 实测) |
|
||||
| re-unpack-simple | 104 | T2 | 方法论 | decision-tree.md + gotchas.md | 关键者(跨域引用 5:grep 实测) |
|
||||
| re-wasm | 121 | T2 | 格式 | layout.md + examples.md | 非关键者(跨域引用 1) |
|
||||
| re-whitebox | 111 | T2 | 格式 | layout.md + examples.md | 非关键者(跨域引用 0) |
|
||||
| re-z3 | 102 | T2 | 工具 | commands.md + gotchas.md | 关键者(跨域引用 4:grep 实测) |
|
||||
|
||||
### 2.4 T3(23,>130 行)
|
||||
|
||||
| 技能 | 行数 | 分层 | 类型 | 文件集 | 备注 |
|
||||
|---|---|---|---|---|---|
|
||||
| re-ai-model | 156 | T3 | 格式 | layout.md + examples.md | |
|
||||
| re-android-native | 146 | T3 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-automotive | 153 | T3 | 工具 | commands.md + gotchas.md | |
|
||||
| re-blockchain | 146 | T3 | 格式 | layout.md + examples.md | |
|
||||
| re-crypto-id | 137 | T3 | 格式 | layout.md + examples.md | |
|
||||
| re-disk-forensics | 147 | T3 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-flutter | 156 | T3 | 格式 | layout.md + examples.md | |
|
||||
| re-format-pe | 183 | T3 | 格式 | layout.md + examples.md | |
|
||||
| re-frida | 162 | T3 | 工具 | commands.md + gotchas.md | |
|
||||
| re-fuzzing | 153 | T3 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-fw-extract | 168 | T3 | 工具 | commands.md + gotchas.md | |
|
||||
| re-game | 205 | T3 | 工具 | commands.md + gotchas.md | |
|
||||
| re-hybrid-app | 183 | T3 | 格式 | layout.md + examples.md | |
|
||||
| re-ios-jb | 149 | T3 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-iot-proto | 208 | T3 | 格式 | layout.md + examples.md | |
|
||||
| re-packer-id | 132 | T3 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-proto-rev | 139 | T3 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-pwn | 141 | T3 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-script-deob | 153 | T3 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-shellcode | 184 | T3 | 方法论 | decision-tree.md + gotchas.md | |
|
||||
| re-tls | 135 | T3 | 格式 | layout.md + examples.md | |
|
||||
| re-triage | 143 | T3 | 工具 | commands.md + gotchas.md | |
|
||||
| re-uefi | 133 | T3 | 格式 | layout.md + examples.md | |
|
||||
|
||||
## 3. 闭环核查
|
||||
|
||||
- 分层闭环:T1 28 + T2 49 + T3 23 + 网关 13 = 113 = 当前实测技能总数 113
|
||||
- 类型闭环:工具 28 + 格式 30 + 方法论 42 + 网关 13 = 113 = 技能总数 113
|
||||
- T2 关键者 29 个(跨域引用 ≥2,grep 实测):re-angr, re-apk, re-behavior, re-crash-triage, re-crypto-decrypt, re-crypto-keys, re-deobfuscate, re-emulation, re-evasion, re-format-elf, re-fw-emulate, re-fw-rootfs, re-gdb, re-ghidra, re-hardware-io, re-imports, re-ioc, re-ios, re-memdump, re-netcap, re-patching, re-sandbox, re-ti, re-tracing, re-unpack-advanced, re-unpack-simple, re-z3, re-python, re-hw-chip
|
||||
- T2 非关键者 20 个:re-anti-cheat, re-dotnet, re-exploit, re-fileless, re-go, re-hypervisor, re-ics, re-java, re-loader, re-mem-forensics, re-mobile-pack, re-plugin-dev, re-ransomware, re-rust, re-wasm, re-whitebox, re-cpp-abi, re-mips, re-harmonyos, re-arm
|
||||
- 覆盖核查:本表行数 = 表内技能数 = 113(脚本从 `ls .claude/skills/` 生成,无遗漏无重复)
|
||||
|
||||
## 4. 簇任务提示(供后续任务引用)
|
||||
|
||||
- T1 批次:正文扩写至 ~130 行基线 + 2 个深度文件;簇按「类型 × 主题相邻」划分(如 re-rtos 与 re-tee 同固件簇;格式类 T1 有 format-macho/nim/zig/swift/fp-runtime/rtos 等)
|
||||
- T2 批次:正文适度补强;关键者(29 个)配深度文件,非关键者(20 个)以正文补强为主
|
||||
- T3 批次:只补深度文件(尚无者)
|
||||
- 文件集命名对齐 frida-scripts.md 惯例;`[[链接]]` 目标 = 文件名去扩展名(validate 既有支持)
|
||||
@@ -0,0 +1,120 @@
|
||||
# 技能库第四轮扩充(覆盖缺口波)设计
|
||||
|
||||
日期:2026-08-25
|
||||
状态:已获用户批准(2026-08-25 逐节确认)
|
||||
|
||||
## 1. 总览
|
||||
|
||||
**目标**:补齐 8 个未覆盖领域——6 个新原子技能 + 2 处扩章,技能总数 112 → 118。
|
||||
|
||||
| # | 领域 | 形态 | 挂载点 |
|
||||
|---|---|---|---|
|
||||
| 1 | ARM 架构逆向(非 Android) | 新技能 re-arm | re-binary-core 子技能列表、re-fw-emulate、triage 固件行 |
|
||||
| 2 | RISC-V 架构逆向 | 新技能 re-riscv | 同 re-arm |
|
||||
| 3 | 现代主机与复古平台 | 新技能 re-console(含复古小节) | re-game 跨域、re-cracking |
|
||||
| 4 | Electron 桌面 JS 应用 | 新技能 re-electron | re-managed 网关子技能列表、triage 托管行、re-browser-ext 跨域 |
|
||||
| 5 | Java Card / SIM applet | 新技能 re-javacard | re-managed(Java 字节码族)、re-iot-proto 智能卡节、re-hardware-io |
|
||||
| 6 | eBPF 程序逆向与对抗 | 新技能 re-ebpf | re-tracing / re-evasion / re-kernel 跨域、rerouting 表 |
|
||||
| 7 | VxWorks/QNX/INTEGRITY | 扩 re-rtos(+3 章) | 触发词同步、跨域加 re-automotive |
|
||||
| 8 | Windows 行为监控工具链 | 扩 re-behavior(+1 节) | 无挂载变更 |
|
||||
|
||||
**产出体量**:对标 re-mips 深度——每个新技能 SKILL.md 约 120-180 行,固定五节(何时使用/工具准备/操作步骤/跨域联合/常见坑与陷阱 ≥3),references/ 仅按需。
|
||||
|
||||
## 2. 全局约束
|
||||
|
||||
- **红线 1 呈现中性**:禁用「最推荐」「强烈建议」等最高级强推措辞
|
||||
- **红线 2 隐私脱敏**:内容不指向具体项目/公司/产品;硬件类给泛化选购指引
|
||||
- **不绑定具体工具**:方法为核心,工具为可替换示例;「工具准备」按模板给跨 OS 安装命令(Linux/macOS/Windows/WSL 分支),仅 Windows 工具注明跨 OS 约束
|
||||
- **validate.mjs**:frontmatter `name`=目录名、`description` 非空(中英触发词)、`type: atomic` 必含「## 工具准备」、`[[链接]]` 必须解析(技能目录或 references/*.md);新技能先于引用它的同步任务,避免中间态死链
|
||||
- **commit 纪律**:每任务 commit 只 `git add` 本任务列出的文件,严禁 `git add -A`
|
||||
- 当前分支 `main`;`npm test` 预期按任务标注递增(112 → 118)
|
||||
|
||||
## 3. 新技能设计
|
||||
|
||||
### 3.1 re-arm —— ARM 架构逆向
|
||||
|
||||
- **何时使用**:非 Android 场景 ARM——嵌入式裸机/固件(Cortex-M0/M3/M4/M7、Cortex-A)、Thumb/ARM 切换、AAPCS 调用约定、M 系向量表、位置相关代码重定位
|
||||
- **何时不用**:Android `.so` 走 re-android-native;通用 AArch64 Linux 用户态走 re-binary-core
|
||||
- **工具准备**:Ghidra/IDA(Thumb 支持)、`readelf`/`file`、`qemu-arm`/`qemu-aarch64`(用户态仿真)、`gdb-multiarch`、binwalk(联动 re-fw-extract)
|
||||
- **操作步骤**:① 架构与字节序确认(`file`/`readelf -h`)② 入口定位(M 系向量表 0x0 起 4B/项、reset handler 在第 2 项;A 系启动代码)③ Thumb 函数边界(BL 目标奇地址、veneer、`bx` 切换点)④ 基址/重定位(flash 加载地址 vs 链接地址偏移修正)⑤ AAPCS 识别(r0-r3 传参、`push {r4-lr}` 栈帧、HFABI 硬浮点变体)⑥ 外设寄存器 xref(0x4000xxxx MMIO 区、`LDR rN,[pc,#imm]` 立即数池)
|
||||
- **坑(≥3)**:Thumb 奇地址函数起点误判;BL/BLX ±32MB 范围外 veneer 混淆;M 系外设映射区当数据段;R14 双用途反编译失真;HFABI 与软浮点混用时参数解读错误
|
||||
|
||||
### 3.2 re-riscv —— RISC-V 架构逆向
|
||||
|
||||
- **何时使用**:RV32/RV64、压缩指令(RVC)、嵌入式(ESP32-C3 类)与 Linux 用户态
|
||||
- **何时不用**:工具链极端定制且无头绪时先走 re-fw-emulate 仿真兜底
|
||||
- **工具准备**:Ghidra(RISC-V 支持成熟)、`qemu-riscv64`/`qemu-riscv32`、binutils 交叉工具链(`riscv64-unknown-elf-objdump`)、readelf
|
||||
- **操作步骤**:架构确认(RV32/RV64 + 字节序)→ reset/入口定位 → RVC 压缩指令识别(2/4 字节混合,勿固定宽度切割)→ gp 相对寻址恢复(`lui+addi` 对、.sdata/.sbss)→ ABI 识别(整数/浮点 ABI、a0-a7 约定)→ 系统调用边界(`ecall` + a7 号)→ 生态指纹(工具链/库函数特征)
|
||||
- **坑(≥3)**:压缩指令流按 4 字节切割全错;gp 全局指针缺失致数据访问散乱;`la`/`li` 伪指令展开形态多变;`ecall` 系统调用号绑定 ABI、无 OS 时为自定义语义;链接器 relax(R_RISCV_RELAX)影响反汇编边界
|
||||
|
||||
### 3.3 re-console —— 现代主机与复古平台逆向
|
||||
|
||||
- **何时使用**:现代主机(Switch NPDM/NSO/加密分区、PS4/PS5 ORBIS、Xbox 系)与复古平台(NES/GB/SNES/GBA/PSX ROM 头、卡带格式、存档/Cheat 码)
|
||||
- **何时不用**:PC 端 Unity/Unreal 走 re-game;改机/盗版操作受授权边界约束(「何时不用」显式声明合规边界)
|
||||
- **工具准备**:Ghidra/IDA + 平台容器工具(hactoolnet 类 NSO/NPDM 解析、ORBIS 解析脚本,实现时核实工具名与可用性)、模拟器调试器(mGBA/no$psx 类)、卡带读取器(泛化选购指引)
|
||||
- **操作步骤**:容器识别 → 容器解析(分区/加密边界区分)→ 代码段提取进通用反编译 → SDK 库指纹 → 补丁差异(联动 re-variant)→ 复古:存档/Cheat 格式(内存地址+值模式)
|
||||
- **坑(≥3)**:加密容器当明文解;SDK 指纹误判;ND 头与正文分离;模拟器与真机行为差异;授权边界声明
|
||||
|
||||
### 3.4 re-electron —— Electron 桌面应用逆向
|
||||
|
||||
- **何时使用**:Electron/asar 应用——asar 解包、主/渲染进程 JS、V8 字节码(`.jsc`)、动态 CDP(`--inspect`)、`ELECTRON_RUN_AS_NODE`
|
||||
- **何时不用**:纯浏览器扩展走 re-browser-ext;混淆 JS 走 re-script-deob
|
||||
- **工具准备**:`npx asar extract` 类、Node/Electron 版本识别、CDP 客户端(chrome-remote-interface 类)、strings、通用反编译器(原生模块)
|
||||
- **操作步骤**:识别 Electron(目录/version 文件)→ asar 提取 → 主进程入口 → 渲染进程混淆 JS(联动 re-script-deob)→ 原生模块 `.node`(联动 re-format-elf)→ 动态 CDP → 反调试对抗(devtools 检测,联动 re-evasion)
|
||||
- **坑(≥3)**:`.jsc` 是 V8 快照非普通 JS(解析/反编译边界注明限制);asar 内路径混淆;`ELECTRON_RUN_AS_NODE` 行为差异;contextIsolation/sandbox 影响注入面;fuses 配置改变运行能力
|
||||
|
||||
### 3.5 re-javacard —— Java Card / SIM applet 逆向
|
||||
|
||||
- **何时使用**:Java Card applet——CAP 文件组件解析(规范 12 组件,tag 1-12:Header/Directory/Applet/Import/ConstantPool/Class/Method/StaticField/ReferenceLocation/Export/Descriptor/Debug;实现时以 Oracle JC VM 规范为准——设计初稿「九组件」遗漏 StaticField/ReferenceLocation,已 errata 见文末)、CAP 字节码(Java 子集+卡片扩展指令,四类 invoke 齐备含 invokevirtual 0x8B——设计初稿「无 invokevirtual 等」断言错误,已 errata)、AID 与安装参数、SIM/USIM/银行卡 applet
|
||||
- **何时不用**:APDU 协议层与 MIFARE/DESFire 物理层走 re-iot-proto;CAP 获取依赖读卡(re-hardware-io)或固件提取(re-firmware)
|
||||
- **工具准备**:CAP 解析(开源解析器或自写 Python 脚本)、Ghidra/IDA 无原生 CAP 支持(脚本化解析)、`javap` 类对照(字节码差异说明)、读卡器(泛化选购指引 + 授权边界)
|
||||
- **操作步骤**:CAP 来源(EEPROM dump/固件/资料)→ Directory 组件偏移表驱动解析 → Method 组件方法体还原 → Import/常量池跨组件引用解析 → Applet `process(APDU)` 入口(CLA/INS 分派表)→ 与 APDU 交互对照(联动 re-iot-proto)
|
||||
- **坑(≥3)**:组件偏移表错误致全文件错位;Import 外部引用(跨 CAP 依赖);字节码子集与 JVM 差异(无 invokedynamic/multianewarray/monitor 等);卡片 dump 访问控制;AID/安装参数影响行为分支
|
||||
|
||||
### 3.6 re-ebpf —— eBPF 程序逆向与对抗分析
|
||||
|
||||
- **何时使用**:BPF-64 指令集、progs/maps 关联、加载链、BCC/libbpf/手工字节码三种来源;用途三分——跟踪取证(bpftrace/bcc 还原)、恶意 eBPF(内核驻留/规避)、EDR 对抗(bpf hook)
|
||||
- **何时不用**:经典内核模块(.ko 驱动)走 re-kernel
|
||||
- **工具准备**:`bpftool`(`prog dump xlated`/`feature`)、`llvm-objdump -d bpf`、pyelftools(ELF section 定位)、专用逆向工具(如 bpf-gazelle 类,实现时核实工具名与可用性)、受控环境(联动 re-sandbox)
|
||||
- **操作步骤**:定位载体(ELF `.text`/`.maps`/`.BTF` 或运行期 dump)→ 反汇编(原始或 `xlated`)→ progs/maps 关系还原 → hook 点识别(kprobe/tracepoint/cgroup 等 attach 类型)→ 语义还原(helper 调用号→内核 API,联动 re-kernel)
|
||||
- **坑(≥3)**:BTF 缺失类型盲区;verifier 重写后 `xlated` 与源码不对应(bpf2bpf 内联/尾调用);helper 调用号随内核版本漂移;map 与 prog 分离;无符号库函数匹配
|
||||
|
||||
## 4. 扩章设计
|
||||
|
||||
### 4.1 re-rtos + VxWorks/QNX/INTEGRITY(+3 章)
|
||||
|
||||
每章同构于现有四章(TCB/内核对象关键字段 → 定位方法 → 特征串):
|
||||
|
||||
- **VxWorks**:WIND_TCB(任务名表、栈指针、优先级字段)、VxWorks 7 结构变化、任务名串特征定位
|
||||
- **QNX**:线程控制块(procnto 微内核)、MsgSend/MsgReceive 消息传递调度链、车机中控场景联动 re-automotive
|
||||
- **INTEGRITY**:分区(partitions)内存布局、任务/进程表结构、航电/工业场景特征
|
||||
|
||||
同步:frontmatter 触发词加 VxWorks/QNX/INTEGRITY;跨域联合加 `[[re-automotive]]`;「何时使用」扩一句商业 RTOS 场景。
|
||||
|
||||
### 4.2 re-behavior + 行为监控工具链(+1 节)
|
||||
|
||||
- **ProcMon**:过滤/标注/CSV 导出关联(进程→文件→注册表→网络时间线)、过滤语法要点
|
||||
- **API Monitor**:API 级 hook 链与调用参数记录(与 re-tracing 的 strace/ltrace 形成 Windows 侧对应)
|
||||
- **ETW**:会话与事件解析(logman/wevtutil 命令;采集侧视角,与 re-evasion 的绕过侧互补)
|
||||
- **Process Explorer**:进程树/句柄/签名验证视图要点
|
||||
- 仅 Windows 工具注明跨 OS 约束(Linux 侧对应走 re-tracing)
|
||||
|
||||
## 5. 挂载与同步清单
|
||||
|
||||
1. `re-analyze/references/triage.md`:路由表补分支——固件行(ARM/RISC-V 分流)、托管行(Electron/Java Card)、游戏行(re-console);按实际表格逐行核对
|
||||
2. `re-analyze/references/rerouting.md`:A/B 证据→技能表补行(`.NSO/NPDM`→re-console、BPF ELF section→re-ebpf、CAP 文件头→re-javacard、asar 结构→re-electron、VxWorks/QNX 特征串→re-rtos、MMIO 外设区→re-arm 等)
|
||||
3. 网关子技能列表:re-binary-core 补 `[[re-arm]]`/`[[re-riscv]]`(对标 `[[re-mips]]` 行);re-managed 补 `[[re-electron]]`/`[[re-javacard]]`;re-game 补跨域 `[[re-console]]`;re-iot-proto 补跨域 `[[re-javacard]]`
|
||||
4. 计数同步:README / AGENTS.md / marketplace.json 技能数 112 → 118(逐字段核对,有计数则同步)
|
||||
5. 新技能创建后 `npm test` 预期输出按任务标注递增
|
||||
|
||||
## 6. 任务顺序与验证
|
||||
|
||||
- **任务顺序**:新技能(6 个)→ 扩章(2 个)→ 挂载同步 → 计数同步 → 终审修复波;新技能先于引用它的同步任务
|
||||
- **每任务**:实现 → 技术事实核对 + 红线对照 → `npm test` → commit(只 add 本任务文件)
|
||||
- **终审波**:全库交叉引用去重、计数一致性、死链清零、技术断言复核
|
||||
- **最终验证**:`node validate.mjs` 输出 `OK: 118 skills validated`;`npm test` 全绿(22 单测不受影响)
|
||||
|
||||
## 7. Errata(2026-08-25 实施期修正)
|
||||
|
||||
- **§3.5 CAP 组件数**:初稿「九组件(Header/Directory/Import/ConstantPool/Class/Method/Descriptor/Export/Applet)」有误——Oracle Java Card 3.2 VM 规范为 12 组件(tag 1-12),遗漏 StaticField(8)/ReferenceLocation(9);正文与 re-javacard SKILL.md 已按规范修正,description 改为「规范 12 组件」。
|
||||
- **§3.5 字节码断言**:初稿「无 invokevirtual 等」有误——JCVM 四类调用指令齐备(invokevirtual 0x8B/invokespecial 0x8C/invokestatic 0x8D/invokeinterface 0x8E),真实 CAP 实证含 invokevirtual;与 JVM 的差异为无 invokedynamic/multianewarray/monitor 等。正文与 SKILL.md 已修正。
|
||||
@@ -0,0 +1,94 @@
|
||||
# DSH 预设就地化(取消独立 bundle 包)设计
|
||||
|
||||
日期:2026-10-12
|
||||
状态:已获用户批准(2026-10-12 逐节确认)
|
||||
|
||||
## 1. 总览
|
||||
|
||||
**目标**:把 rev-skills 的 DSH 独立预设从「仓库内第二个 npm 包」改为「根包自带的 bundle 声明」,去掉重复的包壳与随之而来的同步点;预设行为(预设 id、技能根解析顺序、`bin/dsh.mjs` 子命令)完全不变。
|
||||
|
||||
**来源**:PR #5(`dnfme:feat/dsh-preset`)。本设计在该 PR 的分支上追加提交,就地更新 PR。
|
||||
|
||||
**产出**:新增 1 个文件(`dsh.patch.yml`),删除 `dsh/` 整个目录(4 个文件),其余为常量、断言与文档同步。
|
||||
|
||||
## 2. 实测依据
|
||||
|
||||
下列结论均在本机 dsh 0.2.0-rc.2 上实测得出,非文档推断:
|
||||
|
||||
| 结论 | 证据 |
|
||||
|---|---|
|
||||
| bundle = 任意 npm 包 + `dsh.bundle.patch`;profile 的 `dsh.profile.bundles` 填**包名** | 以根包充当 bundle 搭临时 profile,`dsh --profile t3 --dump-config` 退出 0,`preset-rev-skills` 出现在末层,`customSkillDirs` 表达式解析到该包 `.claude/skills`(122 项) |
|
||||
| patch 文件名任意,路径由 bundle manifest 声明 | 由 `cordis.patch.yml` 改名 `dsh.patch.yml` 后重装并启动,行为不变 |
|
||||
| **patch 文件必须列进该包的 `files`** | 漏列时 `dsh plugin add` 被拒:`failed to read overlay …/node_modules/rev-skills/cordis.patch.yml: ENOENT`,随后还原 package.json / lock / node_modules |
|
||||
| `dsh plugin --profile <p> add <pkg>` 会自动追加 `dsh.profile.bundles` 行 | 实测 manifest 由 `["@deepseek-ai/dsh-base"]` 变为 `["@deepseek-ai/dsh-base", "rev-skills"]` |
|
||||
| bundle 的兼容性校验对无 `@deepseek-ai/*` 依赖的包不构成障碍 | 根包 manifest(含 `bin` / `scripts` / `engines`)直接通过校验并加载 |
|
||||
|
||||
`dsh.bundle.patch` 用 `link:` / `file:` 本地规格与从 registry 安装都走同一套解析(`resolveBundleDir` 先查 dsh 安装锚点,再查 profile 目录)。
|
||||
|
||||
## 3. 新布局
|
||||
|
||||
```
|
||||
rev-skills/
|
||||
dsh.patch.yml ← 新增(唯一新文件,仓库根)
|
||||
package.json ← 增加 dsh.bundle、files 换条目
|
||||
bin/dsh.mjs ← 两个常量
|
||||
docs/dsh-integration.md← 路线二与同步点表重写
|
||||
(删除)dsh/package.json、dsh/LICENSE、dsh/README.md、dsh/cordis.patch.yml
|
||||
```
|
||||
|
||||
`dsh/README.md` 的面向 DSH 侧说明并入 `docs/dsh-integration.md` 第 2 节;`dsh/LICENSE` 不再需要(补丁文件与 `bin/` 同属工具代码一侧,由仓库根 `LICENSE` 覆盖 Apache-2.0)。
|
||||
|
||||
## 4. 根 `package.json`
|
||||
|
||||
- 新增 `"dsh": { "bundle": { "patch": "./dsh.patch.yml" } }`
|
||||
- `files`:删除 `"dsh"`,新增 `"dsh.patch.yml"`(**必需**,见第 2 节第 3 行)
|
||||
- 版本:沿用 PR 的 `0.1.0`,与 `.claude-plugin/marketplace.json` 成对
|
||||
- 不变:`bin` 的 `rev-skills-dsh`、`scripts.dsh`、keywords、description
|
||||
|
||||
## 5. `dsh.patch.yml`
|
||||
|
||||
- 预设行与 18 个子插件配置照旧(补丁内本无包名,`config.id` 仍为 `rev-skills`)
|
||||
- `customSkillDirs` 表达式:删除第 4 候选(`rev-skills-dsh-preset/package.json` 的 `..` join);原第 3 候选「包目录」即本包自身,语义不变
|
||||
- 头部注释按「本包即 bundle」重写;技能根解析顺序说明保留(`REV_SKILLS_DIR` → `<DSH_HOME>/skills` → 本包)
|
||||
|
||||
## 6. `bin/dsh.mjs`
|
||||
|
||||
- `BUNDLE_DIR`:`join(REPO_ROOT, 'dsh')` → `REPO_ROOT`
|
||||
- `BUNDLE_PACKAGE`:`'rev-skills-dsh-preset'` → `'rev-skills'`
|
||||
- `resolveLocalSkillRoot` 的候选说明文案:`从 rev-skills / rev-skills-dsh-preset 的 package.json 反解` → 单包
|
||||
- 其余逻辑(`check` 与四个 `preset` 子命令、dry-run、备份、原子替换)一行不动
|
||||
|
||||
## 7. 测试
|
||||
|
||||
- `tests/dsh.test.mjs`、`tests/dsh-preset.test.mjs`:导入常量与断言随包名/目录改名同步;夹具里的假 `node_modules/rev-skills-dsh-preset` 改为 `rev-skills`
|
||||
- `dsh/package.json 是合法 bundle 清单` 改为根 manifest 断言:`name` 为 `rev-skills`、`dsh.bundle.patch` 指向存在的文件
|
||||
- **新增回归断言**:`dsh.bundle.patch` 指向的文件必须出现在根 `package.json` 的 `files` 列表中(把第 2 节的坑固化;漏列即测试失败)
|
||||
- CLAUDE.md 的测试计数(`npm test = validate + 202 项测试`)按实际数同步
|
||||
|
||||
## 8. 文档
|
||||
|
||||
- `docs/dsh-integration.md`:第 2 节路线二重写(bundle 名为 `rev-skills`;安装命令 `dsh plugin --profile <p> add rev-skills`,本地路径用 `link:` / `file:`;说明 `add` 会自动登记 `bundles` 行);技能根候选表删除第 4 行;第 6 节同步点表把「版本号 ↔ `dsh/package.json`」两行替换为「`dsh.bundle.patch` ↔ `dsh.patch.yml` 实际路径 + 该路径必须列进 `files`」
|
||||
- `README.md` / `README_EN.md` / `AGENTS.md` / `CLAUDE.md` 的 DSH 段落同步(涉及 `dsh/` 目录与包名 `rev-skills-dsh-preset` 的表述全部改写)
|
||||
|
||||
## 9. 验证清单
|
||||
|
||||
1. `node validate.mjs` → `OK: 122 skills validated`
|
||||
2. `npm test` → 全绿,计数与 CLAUDE.md 一致
|
||||
3. `node bin/dsh.mjs check` → `OK: 122 skills DSH-compatible (32 warning(s))`
|
||||
4. 临时 profile:`dsh plugin --profile <p> add <本仓绝对路径>` → manifest 自动出现 `rev-skills` bundle 行 → `dsh --profile <p> --dump-config` 退出 0 且含 `preset-rev-skills`
|
||||
5. `node bin/dsh.mjs preset spec|status|install --apply|uninstall --apply` 往返(dry-run 先行、apply 后 status 为 ok、uninstall 后复原)
|
||||
6. `npm pack --dry-run` 输出中包含 `dsh.patch.yml`
|
||||
|
||||
## 10. 不做
|
||||
|
||||
- 不改 `.claude/skills/` 下任何技能内容
|
||||
- 不改 PR 中与该目标无关的改动:`.gitattributes`、`lib/frontmatter.mjs` 的 CRLF 容忍与键文法放宽、`bin/install.mjs` 的 `--target dsh`、新增测试文件
|
||||
- 不删除 `bin/dsh.mjs` 的 `preset` 子命令(用户明确保留,尽管宿主 `dsh plugin add` 已覆盖安装路径)
|
||||
|
||||
## 11. 风险
|
||||
|
||||
| 风险 | 处置 |
|
||||
|---|---|
|
||||
| 根包被当作 bundle 后,兼容性校验要求声明 DSH peer 版本范围 | 实测无 `@deepseek-ai/*` 依赖即通过;若 DSH 后续收紧,退回独立包即可(本设计不改变补丁内容,两形态可互换) |
|
||||
| `files` 漏列 patch 文件 → 安装期才报错 | 测试固化为回归断言(第 7 节) |
|
||||
| 使用 `link:` 安装时 profile 直接引用工作区,改补丁立即生效、改后未重启则不生效 | 文档排错表保留「预设改完没生效」一行,处置改为重载/重启会话 |
|
||||
Reference in New Issue
Block a user