From 241fa77be096f61f906db5906c6b3e3e6f87d879 Mon Sep 17 00:00:00 2001 From: yhc <1964366186@qq.com> Date: Wed, 12 Aug 2026 21:09:04 +0800 Subject: [PATCH] feat(workflow): non-PE multi-format cookbook U-AV (#65) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add nonpe-format-cookbook for BAT/PS/VBA/JS/SYS/DLL/Android recipes. Wire re-agent-workflow §3.4, malware/js/apk/kernel skills, verify asserts. Dedup DLL Delay-Load with A-T R; detection-only for wiper/BYOVD/reflective. --- skills/apk-reverse/SKILL.md | 5 + skills/js-reverse/SKILL.md | 2 + skills/malware-analysis/SKILL.md | 12 +- .../kernel-driver-reverse.md | 10 ++ .../references/nonpe-format-cookbook.md | 119 ++++++++++++++++++ .../references/re-agent-workflow.md | 24 +++- skills/scripts/verify-routing-coherence.ps1 | 8 +- 7 files changed, 174 insertions(+), 6 deletions(-) create mode 100644 skills/reverse-engineering/references/nonpe-format-cookbook.md diff --git a/skills/apk-reverse/SKILL.md b/skills/apk-reverse/SKILL.md index 7c8bdf2..6914364 100644 --- a/skills/apk-reverse/SKILL.md +++ b/skills/apk-reverse/SKILL.md @@ -224,6 +224,10 @@ adb pull /data/local/tmp/file . - 主 `package` - `application`、`activity`、`service`、`receiver` - `lib/` 目录里是否有 `.so` +4. Issue #65 威胁形态速查(授权样本/设备;详见 `../reverse-engineering/references/nonpe-format-cookbook.md` §7–8): + - 透明/隐藏图标(AU):`aapt dump badging` + manifest theme/label/icon → `E-android-hidden-icon-manifest` + - Magisk/脚本格机特征与远程 curl|sh(AR/AS)→ 特征与 URL 入证,**不执行**破坏命令 + - 持久化路径(AT):`service.d` / `priv-app` 等 → `E-android-persistence` ### 2. Java 逻辑观察 @@ -408,3 +412,4 @@ frida -U -f com.example.app -l hook.js - [ ] 我是否基于 `tool-index` 使用了真实工具路径? - [ ] 我是否产出了可复现证据(命令/脚本/截图/报告)? - [ ] 我是否完成并回写了 RULES 要求的 Checklist 项? +- [ ] 若命中隐藏图标/格机/持久化线索:是否按 U–AV cookbook 记录 E-android-* Evidence(授权范围内)? diff --git a/skills/js-reverse/SKILL.md b/skills/js-reverse/SKILL.md index 3fec4fa..c2d57c5 100644 --- a/skills/js-reverse/SKILL.md +++ b/skills/js-reverse/SKILL.md @@ -132,6 +132,7 @@ description: 在使用 js-reverse-mcp 做前端 JavaScript 逆向时使用,适 - 如果当前任务只是出签名,这一阶段可以降级 - 如果要长期复用算法链路,这一阶段必须做 +- Issue #65 混淆旁路(U–AV §4):JSVMP(AD)→ `E-js-vmp`;CFF+字符串数组(AE)→ `E-js-deobf`;DevTools/debugger 反调试(AF)→ `E-js-anti-debug`。完整触发表见 `../reverse-engineering/references/nonpe-format-cookbook.md`;AST 细节仍用 `references/ast-deobfuscation.md` ## 执行要求 @@ -153,6 +154,7 @@ description: 在使用 js-reverse-mcp 做前端 JavaScript 逆向时使用,适 - Node 复现:`references/node-env-rebuild.md` - 插桩:`references/instrumentation.md` - AST 去混淆:`references/ast-deobfuscation.md` +- 非 PE/JS 混淆菜谱 U–AV:`../reverse-engineering/references/nonpe-format-cookbook.md`(AD/AE/AF) - 回退:`references/fallbacks.md` - 输出契约:`references/output-contract.md` diff --git a/skills/malware-analysis/SKILL.md b/skills/malware-analysis/SKILL.md index b62eadc..af0758f 100644 --- a/skills/malware-analysis/SKILL.md +++ b/skills/malware-analysis/SKILL.md @@ -47,10 +47,11 @@ sha256sum sample.exe ```text Triage MUST 清单(Issue #65): -□ 文件类型:EXE / DLL / SYS / .NET / 其他 +□ 文件类型:EXE / DLL / SYS / .NET / 脚本(bat|ps1|vba) / 其他 □ 架构 x86/x64/ARM;查壳(DIE 等)与编译语言线索 □ DLL/SYS:导入表与导出表并列检查(见 Phase 2 硬门) □ .NET:无传统 IAT → 走 dnSpy/IL/元数据等价锚点(见 Phase 2) +□ 脚本/宏/DLL 专项 P0:见 nonpe-format-cookbook U–AV(E-batch-deobf / E-ps-decode / E-vba-pcode / E-dll-*) ``` ### Phase 1b: 脱壳与 IAT 处理(有壳时 · Issue #65) @@ -136,6 +137,13 @@ Triage MUST 清单(Issue #65): □ P1:进程名扫描 / VEH / int3·DR / 重叠节 / Overlay / .rsrc / Delay-Load □ H/S 平坦化与不透明谓词 → ollvm-deobfuscation.md(不在此复制长文) □ 绕过失败也写 Evidence;禁止反调试退出 = 样本无害 + +非 PE / 脚本 / DLL 补洞(Issue #65 U–AV · 详见 reverse-engineering/references/nonpe-format-cookbook.md): +□ bat/cmd:SET 拼接还原(U)→ E-batch-deobf;UTF-16 BOM(V);REM/GOTO 淹没(W) +□ PowerShell:多层 Base64/Gzip(X)逐层 Evidence;IEX 拼接/反转(Z) +□ VBA:Stomping/P-Code(AA);Chr/Base64(AB);自修改宏(AC) +□ DLL:TLS+DllMain(AJ);导出异常/无导出(AK/AL);Delay-Load 见 A–T R(AM);侧加载/反射(AO/AP) +□ JS/APK/驱动:路由 js-reverse / apk-reverse / kernel-driver-reverse + cookbook,不在此复制长文 ``` ### Phase 4: YARA 规则编写 @@ -278,6 +286,7 @@ Triage RE Behav Intel Detect Remed - `references/anti-analysis-techniques.md` — 94 种反分析技术检测 - `../reverse-engineering/references/re-agent-workflow.md` — IAT 铁律与六阶段门闩(Issue #65) - `../reverse-engineering/anti-analysis.md` — Agent 响应菜谱 A–T(反调试/混淆旁路) +- `../reverse-engineering/references/nonpe-format-cookbook.md` — 非 PE/多格式菜谱 U–AV(脚本/宏/JS/驱动/DLL/Android) - `../reverse-engineering/references/ollvm-deobfuscation.md` — 平坦化/不透明谓词(H/S) ## 任务完成自检(声称完成前 MUST 通过) @@ -288,6 +297,7 @@ Triage RE Behav Intel Detect Remed - [ ] 重做请求是否回到被点名步骤或经确认的前提协商?阻塞时是否说明+请确认而非偷换步骤? - [ ] 动态是否按 TLS→EP→敏感 API→ExitProcess 保底顺序预置断点?时间盒/高危 API 组合是否按旁路处理? - [ ] 反调试/混淆(A–T)是否按 anti-analysis 菜谱记录 Evidence?签名无效是否未错误降级威胁? +- [ ] 脚本/宏/DLL 等非 PE 类型是否按 U–AV cookbook 记录对应 Evidence(如 E-batch-deobf / E-ps-decode / E-vba-pcode / E-dll-*)? - [ ] 我是否基于 `tool-index` 使用了真实工具路径? - [ ] 我是否产出了可复现证据(命令/脚本/截图/报告)? - [ ] 我是否完成并回写了 RULES 要求的 Checklist 项? diff --git a/skills/reverse-engineering/kernel-driver-reverse.md b/skills/reverse-engineering/kernel-driver-reverse.md index 8ef859b..b6fb14f 100644 --- a/skills/reverse-engineering/kernel-driver-reverse.md +++ b/skills/reverse-engineering/kernel-driver-reverse.md @@ -275,6 +275,16 @@ lx-dmesg # 内核日志 --- +## Agent 动作锚点(Issue #65 U–AV) + +与 `references/nonpe-format-cookbook.md` §5 对齐(短表,不替代上文流程): + +| ID | 动作 | Evidence | +|----|------|----------| +| AG | `DriverEntry` 短 → 扫 `MajorFunction` 非空槽,优先 DEVICE_CONTROL/CREATE | `E-driver-irp-handlers` | +| AH | 建立 IOCTL 控制码 → handler 表与 METHOD_* | `E-driver-ioctl` | +| AI | 疑 BYOVD:对照公开脆弱驱动列表;记名/哈希/签名与调用意图;**不写 exploit 步骤** | `E-driver-byovd` | + ## 参考资源 | 资源 | 说明 | 链接 | diff --git a/skills/reverse-engineering/references/nonpe-format-cookbook.md b/skills/reverse-engineering/references/nonpe-format-cookbook.md new file mode 100644 index 0000000..3d4f18a --- /dev/null +++ b/skills/reverse-engineering/references/nonpe-format-cookbook.md @@ -0,0 +1,119 @@ +# 非 PE / 多格式 Agent 响应菜谱 U–AV(Issue #65) + +> 与 PE 反调试菜谱 A–T(../anti-analysis.md)并列:按**文件类型**给出「触发 → 动作一行 → Evidence」。 +> **不是**第二套主流程。Triage 识别类型后跳转到对应 skill + 本表。 +> 默认 **授权隔离 lab / 已授权样本与设备**。格机、BYOVD、反射注入等写**检测与取证**,不写未授权破坏/利用教程。 +> 绕过或还原失败也 MUST 记 Evidence;禁止静默当「无害」。 + +## 0. 路由速查 + +| 类型线索 | 主 skill | 本表章节 | +|----------|----------|----------| +| .bat / .cmd / 批处理 | malware-analysis | §1 | +| .ps1 / PowerShell | malware-analysis | §2 | +| Office 宏 / VBA / .docm/.xlsm | malware-analysis | §3 | +| Web/前端 JS 混淆、JSVMP | js-reverse | §4 | +| .sys / 内核驱动 | +everse-engineering/kernel-driver-reverse.md + cre | §5 | +| .dll 侧重点 | malware-analysis / +e-agent-workflow | §6(与 A–T 去重) | +| APK / Magisk / 隐藏图标 | pk-reverse | §7–§8 | + +Triage 文件类型为脚本/宏/JS/APK/DLL/SYS 时:完成本类型 **P0 锚点 Evidence** 后再深挖;PE 反调试仍走 A–T。 + +## 1. BAT/CMD(U V W) + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **U** | 大量 SET 单字符变量 + %a%%b% 拼接,或 ^ 续行拆命令 | 逐行展开 SET;还原后命令列表;可用 batch 脱混淆工具;**禁止**未还原就当「无动作」 | E-batch-deobf | P0 | +| **V** | 文本打开乱码,HEX 头 FF FE(UTF-16 LE BOM) | 确认 BOM → 转 UTF-8 再解析;或 chcp 65001 + type | E-batch-encoding | P2 | +| **W** | 大量 REM/::、冗余 GOTO/标签淹没真实逻辑 | 去注释;梳 GOTO 真路径;隔离执行抓 cmd 实际命令日志 | E-batch-deadcode | P1 | + +## 2. PowerShell(X Z) + +> 编号保留提出者习惯:**无补丁 Y**。 + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **X** | 多层 FromBase64String / Gzip / Compress / 嵌套 -replace | **逐层**解码;每层结果单独记;工具可选(PowerDecode 等),无工具则手工/脚本 | E-ps-decode-layer-N | P0 | +| **Z** | 字符串倒序、碎片 + 拼接后 Invoke-Expression/IEX | 还原完整串;对 IEX 下断或脚本块日志;明文命令入 Evidence | E-ps-string-restore | P1 | + +## 3. VBA 宏(AA AB AC) + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **AA** | olevba/OLEDump 仅见 P-Code、源码流空(VBA Stomping) | P-Code 反编译工具;不全则 Word/Excel 宏调试观察;写清限制 | E-vba-pcode | P0 | +| **AB** | 大量 Chr() 拼接或 Base64 串,疑 shellcode/嵌套脚本 | 立即窗口/脚本还原串;解码后判类型;动态盯 CreateObject/Shell | E-vba-str-decode | P1 | +| **AC** | 无意义 If 1=2、或 InsertLines/DeleteLines 自修改 | 静跟真分支;动态 bp 自修改 API 并 dump 改后宏 | E-vba-selfmod | P2 | + +## 4. JavaScript(AD AE AF)→ 主路径 js-reverse + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **AD** | 自定义字节码数组 + while/switch 解释器(JSVMP) | 找 VM 入口与 opcode 分发;动态日志轨迹;AST+动态双轨;见 js-reverse DeepDive | E-js-vmp | P0 | +| **AE** | while(1){switch} + 大字符串数组下标 | AST/Babel 重构;数组下标还原字符串;wakaru 等可选;**勿**整份粘贴 PE ollvm-deobfuscation 长文 | E-js-deobf | P0 | +| **AF** | debugger、劫持 console、performance.now 差、DevTools 检测 | 停用断点/固定时间源/无头浏览器;patch 检测点;授权页面 | E-js-anti-debug | P1 | + +## 5. SYS 内核驱动(AG AH AI) + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **AG** | DriverEntry 很短,逻辑不在入口 | 扫 MajorFunction[] 非空槽;优先 IRP_MJ_DEVICE_CONTROL/CREATE;地址列表入证 | E-driver-irp-handlers | P0 | +| **AH** | 存在 DeviceIoControl / IOCTL 分发 | 建控制码→处理函数表;标 METHOD_* 与缓冲方向;用户态通信面 | E-driver-ioctl | P0 | +| **AI** | 样本加载/投放知名脆弱驱动或异常签名驱动(BYOVD 模式) | 对照 LOLDrivers 等**公开**列表;记驱动名/哈希/签名;分析**调用意图**;**不**展开 exploit 步骤 | E-driver-byovd | P1 | + +详见 kernel-driver-reverse.md 流程;本表只补 agent 动作锚点。 + +## 6. DLL(AJ–AQ)— 与 A–T / #72 去重 + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **AJ** | DLL 分析只看了导出/EP,忽略 TLS 或 DllMain | **TLS 回调 + DllMain 都必须看**;动态断点顺序仍遵循四级火箭(TLS→EP/DllMain→API→ExitProcess) | E-dll-tls-dllmain | P0 | +| **AK** | 导出名前良后恶、错名、或导出与行为不符 | 导出表与实际调用交叉;异常导出列表 | E-exports-anomaly | P0 | +| **AL** | 无导出或导出极少,仍被加载 | 从入口、字符串、xrefs、调用方定位;不要因「无导出」放弃 | E-dll-noexport | P0 | +| **AM** | 静态 IAT 缺 DLL、运行时才用 | **See A–T 补丁 R**(Delay-Load / E-delay-import),此处不双写长文 | E-delay-import | P0 指针 | +| **AN** | 需还原导出函数参数与调用约定 | 交叉引用 + 动态看寄存器/栈;标注 stdcall/fastcall 等 | E-dll-export-abi | P1 | +| **AO** | 疑 DLL 劫持/侧加载 | 查应用目录同名 DLL、搜索路径、KnownDLLs;合法程序+异常 DLL 组合 | E-dll-sideload | P1 | +| **AP** | 无文件映射/反射加载线索 | 内存特征、加载器行为、无路径模块;授权环境取证 | E-dll-reflective | P1 | +| **AQ** | 仅因导出名「不像恶意」降风险 | **禁止**只凭导出名判安全;结合段权限、入口、字符串、动态行为 | E-dll-export-priority | P1 | + +DLL/SYS 硬门仍:E-imports + E-exports(见 +e-agent-workflow)。 + +## 7. Android 格机 / 持久化(AR AS AT)→ pk-reverse + +> **仅授权样本、镜像或测试设备。** 动作是检测、提取 IOC 与持久化路径,不是实施破坏。 + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **AR** | Magisk 模块/脚本含删库、刷写、批量 rm 系统分区等**格机特征命令** | 特征命令表 + 模块路径;标高危破坏能力;不执行格机命令 | E-android-wiper-cmd | P0 | +| **AS** | 循环 curl|sh / 远程拉脚本、非常规 C2 URL | 提 URL;分析下载体是否含格机命令;记临时路径 | E-android-wiper-backdoor | P0 | +| **AT** | /data/adb/service.d、post-fs-data.d、可疑 /system/priv-app 等 | 列持久化脚本/APK;内容摘要入证 | E-android-persistence | P1 | + +## 8. Android 透明/隐藏图标(AU AV)→ pk-reverse + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **AU** | LAUNCHER 图标全透明/空 label、Theme.NoDisplay、无 LAUNCHER category、组件 disabled | apt dump badging + manifest;反编译查图标像素;异常项入证 | E-android-hidden-icon-manifest | P0 | +| **AV** | 已装但桌面无图标,后台流量/自启/高危权限/动态恢复图标 | pm list vs 桌面;dumpsys package;广播与 device_admin;行为入证 | E-android-hidden-icon-behavior | P1 | + +## 9. 约束(全局) + +1. **不平行主流程**:阶段门闩仍以 +e-agent-workflow / 各 skill 为准。 +2. **Evidence 必记**:含失败、半还原、quality= 标注。 +3. **与 A–T 去重**:PE 反调试不重复;AM→R;AJ 补 DLL 视角不推翻 TLS 火箭。 +4. **工具缺失**:记 n/a + 手工等价,不假装已用商业套件。 +5. **授权**:破坏性/注入/驱动漏洞类只做防御分析与取证表述。 + +## 10. P0 最小勾选(类型命中时) + +` ext +□ bat/cmd → U(+ 需要时 V/W) +□ ps1 → X(+ Z) +□ vba → AA(+ AB/AC) +□ js 强混淆 → AD 或 AE(+ AF) +□ sys → AG + AH(+ AI 若疑 BYOVD) +□ dll → AJ + AK/AL;Delay-Load 走 R +□ apk 破坏/隐藏 → AR/AS 或 AU(+ AT/AV) +` diff --git a/skills/reverse-engineering/references/re-agent-workflow.md b/skills/reverse-engineering/references/re-agent-workflow.md index 2812607..97a159a 100644 --- a/skills/reverse-engineering/references/re-agent-workflow.md +++ b/skills/reverse-engineering/references/re-agent-workflow.md @@ -1,7 +1,7 @@ # RE Agent 工作流门闩(静态↔动态) > 来源启发:binary-re 阶段划分、社区 RE skill(Frida/r2/Ghidra/IDA 循环)、Cerberus 三头环(静/动/插桩) -> Issue #65 增量:IAT 修复铁律、六阶段映射、.NET/DLL·SYS 等价路径;用户指令可行性门闩;旁路补丁 6–10;反调试/混淆菜谱 A–T(2026-08-12) +> Issue #65 增量:IAT 修复铁律、六阶段映射、.NET/DLL·SYS 等价路径;用户指令可行性门闩;旁路补丁 6–10;反调试/混淆菜谱 A–T;非 PE 多格式菜谱 U–AV(2026-08-12) > 适用:`reverse-engineering/`、`ida-reverse/`、`radare2/`、`malware-analysis/`、与 cre 角色交接 ## 0. 启动 @@ -31,7 +31,8 @@ ```text □ 计算样本 Hash(MD5/SHA256)→ 唯一 ID -□ 识别文件类型:EXE / DLL / SYS / ELF / Mach-O / .NET / 脚本 等 +□ 识别文件类型:EXE / DLL / SYS / ELF / Mach-O / .NET / 脚本(bat/ps1/vba) / JS / APK 等 +□ 非 PE/脚本/APK/驱动专项:见 §3.4 与 `references/nonpe-format-cookbook.md`(U–AV) □ file / DIE / 熵 / 壳特征(PEiD / DIE / Exeinfo 等) □ 架构:x86 / x64 / ARM;编译语言线索(VC++ / Delphi / .NET / Go / Rust) □ 加壳类型线索:UPX / ASPack / VMProtect / Themida / 未知混淆 @@ -173,6 +174,23 @@ **约束**:绕过失败也记 Evidence;禁止把「反调试触发退出」写成「样本无害」。完整 A–T 与 P2(E 编译时间、O 花指令)见 anti-analysis 菜谱节。 +### 3.4 非 PE / 多格式旁路(Issue #65 补丁 U–AV · 路由) + +完整索引:`reverse-engineering/references/nonpe-format-cookbook.md`。此处只列 **类型 → 入口**;动作细节在 cookbook / 对应 skill。 + +| 类型 | 跳转 | P0 Evidence 锚点(示例) | +|------|------|---------------------------| +| BAT/CMD | cookbook §1 + malware | `E-batch-deobf` | +| PowerShell | cookbook §2 + malware | `E-ps-decode-layer-N` | +| VBA 宏 | cookbook §3 + malware | `E-vba-pcode` | +| JS 强混淆 / JSVMP | **js-reverse** + cookbook §4 | `E-js-vmp` / `E-js-deobf` | +| SYS 驱动 | kernel-driver-reverse + cookbook §5 | `E-driver-irp-handlers` / `E-driver-ioctl` | +| DLL 侧重点 | cookbook §6(AM≡A–T **R**) | `E-dll-tls-dllmain` / `E-exports` | +| Android 格机/隐藏图标 | **apk-reverse** + cookbook §7–8 | `E-android-wiper-*` / `E-android-hidden-icon-*` | + +**约束**:不另起「非 PE 六阶段」;与 §3.3 A–T 分工(PE 反调试 vs 多格式)。授权 lab;格机/BYOVD/反射 = 检测取证表述。 + + ## 4. Synthesis(IOC / 攻击链 / 报告) ```text @@ -191,7 +209,7 @@ | 1 初步快速研判 | §0–§1 Triage | Hash、架构、文件类型、查壳;imports/等价锚点;§0.5 指令门闩 | | 2 脱壳与 IAT | §1.2 | IAT 铁律;失败/自校验闪退 → Evidence → Dynamic | | 3 基础静态锚点 | §2 Static | 高危 API 组合;时间盒 SHOULD | -| 4 深度交叉验证 | §3 Dynamic | 断点四级火箭;无行为应急;时间盒;§3.3 A–T 旁路速查 | +| 4 深度交叉验证 | §3 Dynamic | 断点四级火箭;无行为应急;时间盒;§3.3 A–T;§3.4 U–AV 类型路由 | | 5 提取 IoC 与攻击链 | §4 Synthesis | IOC + Kill Chain / Path | | 6 归档与规则化 | §4 + docs-generator / YARA | 结构化报告;规则可选 | diff --git a/skills/scripts/verify-routing-coherence.ps1 b/skills/scripts/verify-routing-coherence.ps1 index 9e3c2ae..54469fa 100644 --- a/skills/scripts/verify-routing-coherence.ps1 +++ b/skills/scripts/verify-routing-coherence.ps1 @@ -178,7 +178,7 @@ Assert-Fields (Join-Path $skillsRoot 'ops/timeline-workitem.md') @('timeline.md' Assert-Fields (Join-Path $skillsRoot 'ops/role-map.md') @('lead', 'cie', 'cpe', 'cre', 'Handoff') Assert-Fields (Join-Path $skillsRoot 'ops/skill-supply-chain.md') @('AST10', 'MCP', 'bootstrap', 'MUST') Assert-Fields (Join-Path $skillsRoot 'references/community-security-skills.md') @('trailofbits', 'agentskills.io', 'MUST', '2026-07') -Assert-Fields (Join-Path $skillsRoot 'reverse-engineering/references\re-agent-workflow.md') @('Triage', 'Static', 'Dynamic', 'Synthesis', 'IAT 修复铁律', 'E-iat-repair-fail', 'E-exports', 'dnSpy', '可行性门闩', 'E-self-check-crash', 'ExitProcess', '时间盒', 'E-api-hash', 'E-anti-debug-peb', 'E-wide-strings', 'A–T') +Assert-Fields (Join-Path $skillsRoot 'reverse-engineering/references\re-agent-workflow.md') @('Triage', 'Static', 'Dynamic', 'Synthesis', 'IAT 修复铁律', 'E-iat-repair-fail', 'E-exports', 'dnSpy', '可行性门闩', 'E-self-check-crash', 'ExitProcess', '时间盒', 'E-api-hash', 'E-anti-debug-peb', 'E-wide-strings', 'A–T', 'U–AV', 'nonpe-format-cookbook') Assert-Fields (Join-Path $skillsRoot 'pentest-tools/references\recon-pipeline.md') @('auth.status', 'network_profile', 'Evidence', 'nuclei') Assert-Fields (Join-Path $skillsRoot 'docs-generator/references\security-report-templates.md') @('Evidence Chain', 'Findings', 'Path') Assert-Fields (Join-Path $skillsRoot 'field-journal/_template.md') @('Scope', 'Evidence', 'Finding') @@ -203,8 +203,12 @@ if ($vendorRulesText -match '(?m)JS/Web 签名逆向报告\s*\|[^\r\n]*malware') Ok 'vendor rules keep JS signature reports flavor-neutral' } Assert-Fields $vendorRulesPath @('skills/ops/evidence-finding-path.md', '来源证据', 'securelist.com/updated-mata', 'www.huorong.cn', 'thin overlay', 'vuln') -Assert-Fields (Join-Path $skillsRoot 'malware-analysis/SKILL.md') @('IAT 修复铁律', 'E-iat-repair-fail', 'E-exports', 'E-self-check-crash', 'ExitProcess', '时间盒', '可行性', 'E-api-hash', 'E-sig-forge', 'A–T') +Assert-Fields (Join-Path $skillsRoot 'malware-analysis/SKILL.md') @('IAT 修复铁律', 'E-iat-repair-fail', 'E-exports', 'E-self-check-crash', 'ExitProcess', '时间盒', '可行性', 'E-api-hash', 'E-sig-forge', 'A–T', 'U–AV', 'E-batch-deobf', 'E-vba-pcode') Assert-Fields (Join-Path $skillsRoot 'reverse-engineering\anti-analysis.md') @('Agent 响应菜谱 A–T', 'E-anti-debug-cpuid', 'E-api-hash', 'SigCheck', 'ollvm-deobfuscation') +Assert-Fields (Join-Path $skillsRoot 'reverse-engineering/references\nonpe-format-cookbook.md') @('U–AV', 'E-batch-deobf', 'E-ps-decode-layer-N', 'E-vba-pcode', 'E-js-vmp', 'E-driver-irp-handlers', 'E-dll-tls-dllmain', 'E-android-hidden-icon-manifest', 'E-delay-import') +Assert-Fields (Join-Path $skillsRoot 'js-reverse/SKILL.md') @('E-js-vmp', 'E-js-deobf', 'nonpe-format-cookbook') +Assert-Fields (Join-Path $skillsRoot 'apk-reverse/SKILL.md') @('E-android-hidden-icon-manifest', 'nonpe-format-cookbook') +Assert-Fields (Join-Path $skillsRoot 'reverse-engineering\kernel-driver-reverse.md') @('E-driver-irp-handlers', 'E-driver-ioctl', 'E-driver-byovd') Assert-Fields (Join-Path $skillsRoot 'docs-generator/references\security-report-templates.md') @('thin `vuln`', '1c. 漏洞技术分析') if ($vendorRulesText -match '(?m)vuln.*默认全文' -or $vendorRulesText -match '第 3 个默认全文 flavor') { # presence of explicit "not third default" language is OK; flag only if it claims vuln IS a third default full flavor