Files
reverse-skills-max/vendor-new/rev-skills/docs/superpowers/specs/2026-08-25-skill-wave-v4-design.md

121 lines
12 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.

# 技能库第四轮扩充(覆盖缺口波)设计
日期: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 已修正。