reverse-skills-max: initial public release (restored, redacted, hardened)
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
# 4 个语言逆向技能设计(2026-08-18)
|
||||
|
||||
## 背景
|
||||
|
||||
rev-skills(97 技能)语言逆向覆盖目前只有 re-go / re-rust。用户确认新增 4 个语言技能:Swift / Zig / Nim / 函数式运行时(Haskell+OCaml 合并)。
|
||||
|
||||
设计约束(沿用全库红线与原则):
|
||||
- **红线 1 呈现中性**:禁用「最推荐」「强烈建议」等最高级强推措辞
|
||||
- **红线 2 隐私脱敏**:内容不指向具体项目/公司/产品
|
||||
- **不绑定具体工具**:方法为核心,工具为可替换示例(工具准备保留跨 OS 安装指引)
|
||||
- 工作区已干净(无未提交文件)——re-binary-core 可正常修改提交
|
||||
- 当前分支 `main`
|
||||
|
||||
## 变更总览
|
||||
|
||||
| # | 新技能 | 类型 | 挂载 | 计数 |
|
||||
|---|---|---|---|---|
|
||||
| 1 | re-swift | 原子 | re-binary-core | 98 |
|
||||
| 2 | re-zig | 原子 | re-binary-core | 99 |
|
||||
| 3 | re-nim | 原子 | re-binary-core | 100 |
|
||||
| 4 | re-fp-runtime | 原子 | re-binary-core | 101 |
|
||||
|
||||
最终:101 技能 = 1 入口 + 12 网关 + 88 原子。
|
||||
|
||||
## ① re-swift(Swift 生态)
|
||||
|
||||
- **定位**:Swift 二进制逆向——mangling、协议 witness table、闭包捕获、ObjC 互操作
|
||||
- **frontmatter**:`name: re-swift`;触发词:Swift逆向、swiftc、witness table、swift demangle、闭包捕获、Swift 产物
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:Swift 产物(Mach-O/ELF 含 Swift mangling 特征);不用:纯 ObjC(走 [[re-ios]] / [[re-macos]] 的 ObjC 路径)
|
||||
2. 工具准备——swift-demangle(Swift 工具链)、llvm-objdump、Ghidra/IDA;跨 OS 安装命令
|
||||
3. 操作步骤——
|
||||
1. 产物识别(`$s` mangling 前缀、swift_* 运行时导入)
|
||||
2. mangling 解码(swift-demangle 批量:类型/函数/泛型展开)
|
||||
3. 协议 witness table(协议方法分发表定位与还原)
|
||||
4. 闭包捕获(context 结构:捕获变量布局还原)
|
||||
5. ObjC 互操作(@objc 桥接、NSObject 子类、消息发送路径)
|
||||
4. 跨域联合——[[re-binary-core]] 网关;[[re-ios]] / [[re-macos]] 生态衔接
|
||||
5. 常见坑与陷阱——mangling 版本差异、泛型展开符号爆炸、witness table 无符号名、闭包捕获含引用语义
|
||||
- **挂载**:re-binary-core 子技能列表 + 选择树分支;re-ios / re-macos 跨域引用
|
||||
|
||||
## ② re-zig(Zig 产物)
|
||||
|
||||
- **定位**:Zig 编译产物逆向——ABI 简单(无 RTTI/无异常)、comptime 展开、panic/错误处理路径
|
||||
- **frontmatter**:触发词:Zig逆向、zig、comptime、zig 产物、panic
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:Zig 产物(无 C++ RTTI/异常表、panicking 函数特征);不用:C/C++ 产物(走 [[re-cpp-abi]])
|
||||
2. 工具准备——readelf / llvm-nm、Ghidra/IDA;跨 OS 安装
|
||||
3. 操作步骤——
|
||||
1. 产物识别(panicking 函数特征、std 符号模式、无 RTTI/异常表)
|
||||
2. 导出符号与启动路径(start/main、comptime 展开产物)
|
||||
3. panic/错误处理路径(错误联合类型布局)
|
||||
4. C ABI 边界(@extern/@cImport 产物识别)
|
||||
4. 跨域联合——[[re-binary-core]] 网关;[[re-cpp-abi]] 边界区分
|
||||
5. 常见坑与陷阱——comptime 展开导致符号膨胀、panic 路径误导、错误联合布局版本差异、与 C 混合编译难分界
|
||||
- **挂载**:re-binary-core
|
||||
|
||||
## ③ re-nim(Nim 产物)
|
||||
|
||||
- **定位**:Nim 编译产物逆向——GC/异常运行时、NimString、导出符号
|
||||
- **frontmatter**:触发词:Nim逆向、nim、NimString、NimMain、nim 产物
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:Nim 产物(NimMain/GC 符号特征);不用:C 产物(走 [[re-binary-core]] 通用)
|
||||
2. 工具准备——readelf、Ghidra/IDA;跨 OS 安装
|
||||
3. 操作步骤——
|
||||
1. 产物识别(NimMain / GC 符号、NimString 结构特征)
|
||||
2. 字符串与序列结构(NimStringV2 布局:len/reserved/data)
|
||||
3. 异常与 raises 路径(Nim 异常机制)
|
||||
4. GC 与引用计数(refc/orc 差异)
|
||||
4. 跨域联合——[[re-binary-core]] 网关
|
||||
5. 常见坑与陷阱——GC 版本差异(refc/orc)、NimString 布局随版本变化、导出符号被 strip、C 混合编译
|
||||
- **挂载**:re-binary-core
|
||||
|
||||
## ④ re-fp-runtime(函数式运行时:Haskell / OCaml 合并)
|
||||
|
||||
- **定位**:函数式语言运行时逆向——GHC RTS 与 OCaml runtime 的闭包/堆模型;逆向着重数据流而非控制流
|
||||
- **frontmatter**:触发词:Haskell逆向、OCaml逆向、GHC RTS、thunk、STG、OCaml runtime、闭包、函数式产物
|
||||
- **章节**:
|
||||
1. 何时使用 / 何时不用——用:Haskell/OCaml 产物(RTS 符号、block 头特征);不用:命令式语言产物(各归各技能)
|
||||
2. 工具准备——readelf、ghc 工具链(ghc-nm 等)、ocamlobjinfo、Ghidra/IDA;跨 OS 安装
|
||||
3. 操作步骤——
|
||||
1. 运行时识别(GHC RTS 符号 / OCaml block 头;字节码 vs 原生产物区分)
|
||||
2. 闭包与堆对象(GHC thunk/CAF 布局;OCaml tagged int / block 头)
|
||||
3. 调用约定(GHC 栈/寄存器约定;OCaml 参数传递)
|
||||
4. 分析策略(数据流优先——函数式产物控制流被打散,闭包字段与构造器是主要线索)
|
||||
4. 跨域联合——[[re-binary-core]] 网关
|
||||
5. 常见坑与陷阱——RTS 版本差异、thunk 惰性求值误导(未求值闭包 vs 已求值)、OCaml 字节码非 native、控制流打散导致静态分析失效
|
||||
- **挂载**:re-binary-core
|
||||
|
||||
## 同步
|
||||
|
||||
- re-binary-core:子技能列表加 4 个 + 选择树加 4 分支(目标语言 → 对应技能)
|
||||
- re-ios / re-macos 跨域联合各加一行 [[re-swift]]
|
||||
- README:技能导航(97)→(101)、「12 大类网关 → 84 原子技能」→ 88、re-binary-core 导航行加 4 个
|
||||
- AGENTS.md:(97 个技能)→(101 个技能)、原子技能(84)→(88)
|
||||
- marketplace.json:97 个技能 → 101 个技能
|
||||
|
||||
## 校验与测试
|
||||
|
||||
- validate.mjs 自动覆盖 4 个新技能(frontmatter name=目录名 / type=atomic / 工具准备 / 链接)
|
||||
- `npm test` 全绿(101 skills validated)
|
||||
- 工作区已干净,无未提交文件冲突
|
||||
Reference in New Issue
Block a user