17 KiB
设计:逆向工程技能库(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 |
落地方式:
- 每个网关 SKILL.md 含「跨域联合」章节,声明引用场景与顺序(引用即
[[链接]],被引用技能按需加载) 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 运行)校验:
- 每个技能目录有
SKILL.md+ 合法 frontmatter(name/description) - 所有
[[链接]]指向仓库内真实存在的技能(防死链) - 每个技能含「工具准备」章节(通用性硬性检查)
- 命名规范(
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 完整覆盖三种安装方式与七种工具适配说明