Files

8.7 KiB
Raw Permalink Blame History

中途再路由机制 实现计划

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: 建立「中途再路由」机制——分析中证据特征出现即触发对应技能、网关完成必查、未命中按约束换路,解决「走完入口不再调用技能」的痛点。

Architecture: 新建 re-analyze/references/rerouting.md(证据→技能触发表,A/B 双表)+ re-analyze 第三步改双轨强制 + 两个引用点(analysis-contract / triage)统一指向。无新技能,91 技能不变。

Tech Stack: Markdown / validate.mjs(npm test,现有)

Global Constraints

  • 红线 1 呈现中性:禁用「最推荐」「强烈建议」等最高级强推措辞
  • 红线 2 隐私脱敏:内容不指向具体项目/公司/产品
  • validate.mjs:references/*.md 文件名(去扩展名)为合法 链接 目标;SKILL.md 正文 链接 必须可解析
  • rerouting.md 的 链接 全部指向已存在技能(re-cpp-abi 未建——该行用文字标注「(re-cpp-abi 待建,先走 re-binary-core)」,不写 re-cpp-abi 死链)
  • 工作区有 4 个未提交修改(re-binary-core / re-mobile / re-protocol 的 SKILL.md、README.md)——各任务 commit 只 git add 本任务列出的文件,严禁 git add -A;本计划不涉及这 4 个文件
  • 当前分支 main;npm test 预期 OK: 91 skills validated

Task 1: 创建 rerouting.md 触发表

Files:

  • Create: .claude/skills/re-analyze/references/rerouting.md

Interfaces:

  • Consumes: 无(新 references 文件)

  • Produces: references 目标 rerouting(validate 的 knownRefs 收录,供 Task 2/3 的 rerouting 链接解析)

  • Step 1: 创建 rerouting.md

写入 .claude/skills/re-analyze/references/rerouting.md:

# 中途再路由触发表

运行时证据触发的唯一事实源(区别于 triage.md 的入口「目标→路径」决策表)。分析过程中按双轨使用:

- **轨 1(网关完成必查)**:每网关完成后对照 A/B 表检查新证据
- **轨 2(证据出现即查)**:每产出新证据类型(字符串/节表/行为/加密特征)立即对照 A 表
- **未命中** → 按 B 表约束行动,禁止自行硬琢磨

## A 表:证据特征 → 触发技能

| 证据特征(分析中看到) | 触发技能 |
|---|---|
| 节表异常(UPX0/.aspack)、熵 >7.0 | [[re-packer-id]] → [[re-anti-analysis]] |
| 未知加密算法、S-box/常量指纹、加密流量 | [[re-crypto-id]] |
| 硬编码密钥/口令、内存中的 key | [[re-crypto-keys]] |
| 解密函数已定位、密文可还原 | [[re-crypto-decrypt]] |
| 反调试/反 VM 特征(ptrace、CPUID、时间检测) | [[re-evasion]] / [[re-anti-analysis]] |
| 动态注册 JNI、so 函数级加密 | [[re-android-native]] |
| 混淆(CFF/花指令/字符串加密) | [[re-deobfuscate]] |
| 网络回连/信标/C2 特征 | [[re-netcap]] → [[re-behavior]] |
| 持久化/注入/进程树异常 | [[re-behavior]] |
| 崩溃/段错误/ASAN 报告 | [[re-crash-triage]] |
| Python 打包特征(PyInstaller/PyArmor) | [[re-python]] |
| Flutter/RN 引擎特征 | [[re-hybrid-app]] |
| 加固商特征(加固壳) | [[re-mobile-pack]] |
| RTTI/异常表(.pdata/.xdata)密集 | (re-cpp-abi 待建,先走 [[re-binary-core]]) |

## B 表:卡住信号 → 换路

| 卡住信号 | 换路 |
|---|---|
| 同参数重复 ≥2 次无新证据 | 对照 A 表重查 / 换工具视角([[analysis-contract]] 调查预算) |
| 单命令 ≥3 次无进展 | 停下评估,重跑 re-analyze 第二步(任务识别)或换网关 |
| 分析超 30 次工具调用无结论 | 回退到最近有产出的环节,按 [[analysis-contract]] 复核格式交付部分结论 |
| 目标行为与静态结论矛盾 | 动态侧 [[re-sandbox]] / [[re-tracing]] 对照 |

## 使用规则

1. 每产出新证据类型 → 查 A 表,命中即调用对应技能,完成后回到轨 1 继续
2. 每网关完成 → 查 A+B 表
3. 未命中任何表项 → 按 B 表约束行动(换思路/回退/交付部分结论)
  • Step 2: 结构校验

Run: npm test Expected: OK: 91 skills validated(references 文件不校验正文链接,但保持全部链接有效;re-netcap→re-behavior 等箭头链接为文字序列,非 死链)

  • Step 3: Commit
git add .claude/skills/re-analyze/references/rerouting.md
git commit -m "feat: rerouting 中途再路由触发表(A 证据→技能 / B 卡住→换路)"

Task 2: re-analyze 第三步改双轨强制 + 常见坑

Files:

  • Modify: .claude/skills/re-analyze/SKILL.md(第三步编排分派段落改双轨;常见坑追加一条)

Interfaces:

  • Consumes: Task 1 的 rerouting(rerouting 链接可解析)

  • Produces: 入口级双轨强制机制(第三步 + 常见坑)

  • Step 1: 第三步段落改双轨

.claude/skills/re-analyze/SKILL.md 现状(第三步段落):

调用对应大类网关技能(`[[re-binary-core]]` `[[re-malware]]` `[[re-firmware]]` `[[re-protocol]]` `[[re-mobile]]` `[[re-anti-analysis]]` `[[re-cracking]]` `[[re-vuln]]` `[[re-ctf]]` `[[re-managed]]` `[[re-forensics]]`),网关内部自行选择原子技能。每个环节完成后检查新证据,必要时回退调整路径(见 triage.md 复合任务示例)。

改为(在原文后追加双轨段,原文保留):

调用对应大类网关技能(`[[re-binary-core]]` `[[re-malware]]` `[[re-firmware]]` `[[re-protocol]]` `[[re-mobile]]` `[[re-anti-analysis]]` `[[re-cracking]]` `[[re-vuln]]` `[[re-ctf]]` `[[re-managed]]` `[[re-forensics]]`),网关内部自行选择原子技能。每个环节完成后检查新证据,必要时回退调整路径(见 triage.md 复合任务示例)。

**双轨再路由(强制,见 [[rerouting]])**:
- 轨 1(网关完成必查):每网关完成后,对照 [[rerouting]] 的 A/B 表检查新证据;命中 → 调用对应技能,完成后回到轨 1 继续
- 轨 2(证据出现即查):分析中每产出新证据类型(字符串/节表/行为/加密特征),立即对照 A 表;命中 → 调用技能
- 未命中任何表项 → 按 B 表约束行动(换思路/回退/交付部分结论),禁止自行硬琢磨
  • Step 2: 常见坑追加一条

.claude/skills/re-analyze/SKILL.md 常见坑末尾(「自挖前先搜社区逆向成果」条之后)追加:

- **走完入口不再调用技能**:现象——入口编排后自己硬琢磨,中途发现新特征(壳/加密/反调试)不调对应技能;原因——再路由未执行;对策——按第三步双轨:每网关完成/每新证据对照 [[rerouting]] 触发表,命中即调
  • Step 3: 结构校验

Run: npm test Expected: OK: 91 skills validated(rerouting 解析成功,无 FAIL)

  • Step 4: Commit
git add .claude/skills/re-analyze/SKILL.md
git commit -m "增强: re-analyze 第三步双轨再路由强制(网关完成必查 + 证据出现即查)"

Task 3: 两个引用点统一指向 rerouting

Files:

  • Modify: .claude/skills/re-analyze/references/analysis-contract.md(加引用行)
  • Modify: .claude/skills/re-analyze/references/triage.md(第 31 行改指向)

Interfaces:

  • Consumes: Task 1 的 rerouting(链接可解析)

  • Produces: 触发表唯一事实源的全库指向

  • Step 1: analysis-contract.md 加引用行

.claude/skills/re-analyze/references/analysis-contract.md 的「分析全流程遵守本契约」段(首段)末尾追加一行:

中途再路由:证据触发按 [[rerouting]] 双轨执行(轨 1 网关完成必查 / 轨 2 证据出现即查),命中即调对应技能。
  • Step 2: triage.md 第 31 行改指向

.claude/skills/re-analyze/references/triage.md 现状第 31 行:

- 每个环节完成后检查是否有新证据改变后续路径(如动态分析发现加壳 → 回退 re-anti-analysis)。

改为:

- 每个环节完成后检查是否有新证据改变后续路径(如动态分析发现加壳 → 回退 re-anti-analysis)。中途再路由统一按 [[rerouting]] 双轨执行(证据触发 / 网关完成必查)。
  • Step 3: 结构校验

Run: npm test Expected: OK: 91 skills validated,无 FAIL

  • Step 4: Commit
git add .claude/skills/re-analyze/references/analysis-contract.md .claude/skills/re-analyze/references/triage.md
git commit -m "增强: analysis-contract/triage 统一指向 rerouting 触发表"