Files
reverse-skills-max/vendor-new/rev-skills/docs/superpowers/specs/2026-08-07-reverse-engineering-skills-design.md

247 lines
17 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.

# 设计:逆向工程技能库(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 完整覆盖三种安装方式与七种工具适配说明