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

17 KiB
Raw Permalink Blame History

设计:逆向工程技能库(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 原子技能模板

---
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 完整覆盖三种安装方式与七种工具适配说明