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

12 KiB
Raw Blame History

技能库第四轮扩充(覆盖缺口波)设计

日期: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 已修正。