12 KiB
12 KiB
技能库第四轮扩充(覆盖缺口波)设计
日期: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. 挂载与同步清单
re-analyze/references/triage.md:路由表补分支——固件行(ARM/RISC-V 分流)、托管行(Electron/Java Card)、游戏行(re-console);按实际表格逐行核对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 等)- 网关子技能列表:re-binary-core 补
[[re-arm]]/[[re-riscv]](对标[[re-mips]]行);re-managed 补[[re-electron]]/[[re-javacard]];re-game 补跨域[[re-console]];re-iot-proto 补跨域[[re-javacard]] - 计数同步:README / AGENTS.md / marketplace.json 技能数 112 → 118(逐字段核对,有计数则同步)
- 新技能创建后
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 已修正。