Files
reverse-skills-max/vendor-new/rev-skills/docs/superpowers/specs/2026-08-18-re-skill-expansion-design.md

95 lines
6.4 KiB
Markdown
Raw 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.

# rev-skills 能力新增设计(2026-08-18)
## 背景
rev-skills(89 技能 = 1 入口 + 12 网关 + 76 原子)经四库拆解与技能级对标调研(ctf-skills / headless-ghidra / Android-Pentesting-Skill / android-reverse-engineering-skill 等),识别出 5 项生态已有、本库缺失的能力。用户确认全部新增。
设计约束(沿用全库红线与原则):
- **红线 1 呈现中性**:禁用「最推荐」等强推措辞
- **红线 2 隐私脱敏**:内容不指向具体项目/公司/产品
- **不绑定具体工具**:方法为核心,工具为可替换示例(工具准备章节保留跨 OS 安装指引)
- 工作区有 3 个未提交文件(re-binary-core / re-mobile / re-protocol 的 SKILL.md)——各提交不得包含它们
## 变更总览
| # | 项 | 类型 | 计数影响 |
|---|---|---|---|
| 1 | re-python | 新原子技能(挂 re-managed) | 90 |
| 2 | re-frida-script-author | 新原子技能 | 91 |
| 3 | Keystore 审计 | 并入 re-android-native | — |
| 4 | Flutter MethodChannel 拦截 | 并入 re-hybrid-app | — |
| 5 | svc 裸系统调用检测 | 并入 anti-dynamic-workflow.md | — |
最终:91 技能 = 1 入口 + 12 网关 + 78 原子。
## ① re-python(新原子技能)
- **定位**:Python 打包/混淆样本分析——PyInstaller / PyArmor / Nuitka / Cython / pyc
- **frontmatter**:`name: re-python`,description 含触发词:Python打包、PyInstaller、PyArmor、pyc、python exe、Python 样本
- **章节**(按 docs/skill-template.md 原子技能规范):
1. 何时使用 / 何时不用——用:PyInstaller 单文件/目录 exe、PyArmor 加固、.pyc 样本、Nuitka/Cython 编译产物;不用:纯 .py 源码混淆(转 [[re-script-deob]])
2. 工具准备——pyinstxtractor(pip 或脚本)、PyArmor-Unpacker(按版本选法)、pycdc / pycdas、python3、file;各工具跨 OS 安装命令
3. 操作步骤——
1. 识别打包器:`file` + strings 特征(PyInstaller 的 `PyInstaller`/`_MEI` 字符串、PyArmor runtime 特征)
2. PyInstaller 解包:pyinstxtractor 提取归档,定位主 .pyc
3. PyArmor 解包:按 PyArmor 版本选 PyArmor-Unpacker 三方法之一
4. pyc 版本识别:magic 号对照表(按 struct.unpack 读头 4 字节,对照 Python 版本)
5. 清理 confusion code:删假函数/死代码,定位核心加密/外泄逻辑
4. 跨域联合——[[re-managed]] 网关调用;纯脚本混淆转 [[re-script-deob]];恶意场景转 [[re-malware]];pyc 深度还原转 [[re-binary-core]]
5. 常见坑与陷阱——pyc 版本不匹配、PyArmor 版本差异、Cython 产物无 pyc、假函数干扰定位
- **挂载**:re-managed 选择树加分支「.exe 且含 PyInstaller/PyArmor 特征 → [[re-python]]」
## ② re-frida-script-author(新原子技能)
- **定位**:目标特征 → Frida 脚本生成方法论(探 → 选 → 改 → 验);独立于 re-frida 的执行操作(用户确认独立技能)
- **frontmatter**:`name: re-frida-script-author`,description 含触发词:生成Frida脚本、写hook脚本、frida脚本怎么写、写个hook
- **章节**:
1. 何时使用 / 何时不用——用:需要新脚本时(拦截/绕过/追踪);不用:执行现成脚本(转 [[re-frida]])
2. 工具准备——frida-tools、python3、目标设备/模拟器;模板素材 [[frida-scripts]]
3. 操作步骤——
1. 目标侦察:静态特征(目标 API/类名/加固商)+ 基线行为(崩溃迭代法,见 [[anti-dynamic-workflow]])
2. 检测点/目标 API 识别:加密 → 拦截模板;证书固定 → SSL 模板;双向 TLS → keystore 模板;反调试 → 检测绕过模板
3. 模板选择:按 [[frida-scripts]] 模板表选骨架
4. 改写:包名/类名/方法名/overload 精确匹配(保存 original、带 this 调用)
5. 验证:spawn + `--pause` 跑通,输出 JSON 可解析,失败回退步骤 2
4. 跨域联合——[[re-frida]] 执行;[[re-mobile]] / [[re-android-native]] 场景衔接;[[anti-dynamic-workflow]] 对抗面
5. 常见坑与陷阱——overload 不匹配静默失效、Java.use 缓存覆盖、参数索引版本相关、先探后写不猜
- **挂载**:re-frida 跨域联合加「脚本生成 → [[re-frida-script-author]]」
## ③ Keystore 审计(并入 re-android-native)
re-android-native 加「Keystore 审计」章节:
- AndroidKeyStore 遍历:`KeyStore.getInstance("AndroidKeyStore")` → `aliases()` 枚举
- 条目属性:算法/用途/来源(KeyInfo 的 isInsideSecureHardware——TEE vs StrongBox 区分)
- 用途判断:签名密钥 / 加密密钥 / 生物绑定(setUserAuthenticationRequired)
- 与 hook 的衔接:加密拦截时若密钥来自 Keystore,`getEncoded()` 不可用——记录别名与用途而非密钥字节
## ④ Flutter MethodChannel 拦截(并入 re-hybrid-app)
re-hybrid-app 加「Flutter MethodChannel 动态拦截」章节:
- hook `io.flutter.plugin.common.MethodChannel` 的 MethodCallHandler(channel 名/方法名/参数 JSON 记录)
- engine messenger 层拦截(平台通道消息)
- 与 Dart 侧静态观察互补(channel 名与调用点)
## ⑤ svc 裸系统调用检测(并入 anti-dynamic-workflow.md)
anti-dynamic-workflow.md 加「裸系统调用检测」节:
- 原理:目标自实现系统调用绕过 libc,基于 libc 符号的 hook 与检测失效
- 手法:按架构分支特征码(arm64 SYS_OPEN=56、svc 机器码 `01 00 00 D4`;arm SYS_OPEN=5、`00 00 00 EF`)
- 可执行段扫描(r-x)过滤 .so 段 → Memory.scan 特征码 → 回读 svc 前一条指令取系统调用号 → 命中 SYS_OPEN 才 attach → 打印文件名与返回值
- 注意:arm64 分支参数索引按系统调用约定核对
## 计数同步
- README:技能导航(89)→(91);「12 大类网关 → 76 原子技能」→ 78;导航列表加 re-python / re-frida-script-author 两行
- AGENTS.md:(89 个技能)→(91 个技能)
- marketplace.json:description「89 个技能」→「91 个技能」
- re-managed / re-frida 挂载(见 ①②)
## 校验与测试
- validate.mjs 自动覆盖两个新技能(frontmatter name=目录名 / type=atomic / 工具准备章节 / [[链接]] 完整性)
- `npm test` 全绿(91 skills validated)
- 手工验证:新技能 frontmatter 触发词有效、挂载链接可解析
- 不触碰工作区 3 个未提交文件;提交按文件粒度