# 中途再路由机制 实现计划 > **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`: ````markdown # 中途再路由触发表 运行时证据触发的唯一事实源(区别于 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** ```bash 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** ```bash 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` 的「分析全流程遵守本契约」段(首段)末尾追加一行: ```markdown 中途再路由:证据触发按 [[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** ```bash git add .claude/skills/re-analyze/references/analysis-contract.md .claude/skills/re-analyze/references/triage.md git commit -m "增强: analysis-contract/triage 统一指向 rerouting 触发表" ```