# 能力矩阵(按证据层级,2026-10-25) > 用途:一页看清"哪些已证实、哪些只到夹具、哪些未做"。本表只记录已有验收中明确出现的事实;未出现的一律写"未验证",不推断。 > 证据层级:**L1** 文件/配置就绪 · **L2** fixture/fake 通过 · **L3** 真实原生执行(自产样本) · **L4** 真实目标/业务恢复。 > 低层通过不得当作高层结论。如与 `PROTECTION_CAPABILITY_MATRIX.md`(旧)冲突,以本表日期为准。 > 来源:2026-10-24《融合改造独立验收与 DeepSeek Harness 实机核验》及此前验收记录(原始证据目录 `_research\fusion-independent-acceptance-20261024-v1`)。 ## 一、已有证据的能力 | 能力 | 已到层级 | 范围与边界 | |---|---|---| | 工具面 Core 8 / Full 43,13 个审批门 | L2(已装 DSH SDK 43 条记录断言;新增 `ig5_package`(P3)与 `ig5_workspace`/`ig5_recovery`(P2 从 `ig5_profile` 拆出)均待评审) | 注册与审批语义经实际安装的 SDK 核验;Core 8 估算体积 3,478/4,000 token(字符数/4);不等于每个原生功能都跑过 | | 只读研究资料链路(documents/read 分页) | L3(真实桌面模型会话) | 11 次真实工具调用、0 错误;13 份文档共 30 页逐字一致;26 个私有 GET 请求被拒绝 | | 融合包联合回归 | L2 | 351/351(选定联合套件,非全部历史测试) | | Python 测试 | L2 | 43/43 | | 全量语法 | L1 | 415 JS/MJS、215 Python、35 PowerShell 通过 | | 打包 | L1/L2 | 8 个场景通过,新模块缺件会被拒绝 | | 安装一致性 | L1 | 1016 个源码/stage/安装文件 SHA 一致;旧版本备份 1010 文件 SHA 一致 | | 纯位向量(BV)候选验证 | L2(固定求解器 + 独立回放) | 4 组正例、4 个控制;错误候选被拒;**仅表示复杂度下降(18→6 节点、10→1 运算),不证明耗时/成功率收益** | | CFF 覆盖层(局部边) | L2(夹具 CFG/IR) | 5 个图案例 + 1 条纯 BV 条件边;错误条件/root/调用者前提被拒;**不是真实 CFF 目标成功** | | 方法适用性、shadow 实验建议 | L2(离线 fixture) | 各 16 案通过;类型 IR/实例缺证据时保持 unknown | | UPX rotate、owned-branch-vm64 | L3(**仅自产样本**) | 不外推到其他样本或通用 VM | | 行为清单(`ig5_scan` 的 `behaviors`,2026-10-24) | L3(真实 Ghidra,**仅自造 PE64 夹具**;规则表与聚合逻辑另有 16 条单测) | 381 个 API 名、21 个类别、14 条函数级行为链 + 1 条"多种反调试"规则;按函数聚合,穿透 import thunk,识别以字符串形式存放的 API 名,排除导入表自身的名字条目。**线索而非证明**:API 共现不证明行为被执行、不证明作用对象与意图。**仅验证 PE 导入表**;ELF/PLT、Android 原生库的 thunk 穿透与分类**未在真实样本上验证**;规则表的误报率/漏报率**未做评测** | | 固件前端(`ig5_package` 的 `firmware` / `unpack`,2026-10-25) | L2(**全部使用自造镜像**,由独立写出的构造器按格式规范生成;SquashFS/ext 另与 7-Zip 对照名字和大小;真实文件只验证了 PE 与 ZIP/JAR/APK 的容器识别,**没有真实路由器/摄像头固件验证过**) | 逐偏移签名扫描但每个命中必须通过各格式自己的头部校验(CRC/哈希/大小/版本)才算组件;gzip/bzip2/xz/lzma/zlib 有界解压(输出与压缩比上限)并递归扫描;SquashFS 4(gzip/lzma/xz,两种字节序,碎片块,稀疏块)、ext2/3/4(直接/间接/extent)、cpio newc、tar、zip 列表与解包;U-Boot 传统镜像(头/数据 CRC)、FIT(sha/crc 哈希逐项核验)、设备树、Android boot v0–v4、Android sparse(还原为原始镜像后继续扫描)、TRX;JFFS2/UBI/UBIFS/CramFS/ROMFS/zstd/LZ4/OTA payload 只识别不展开(UBI/UBIFS 头 CRC 已校验)。报告含文件表、值得注意的文件(凭据/启动脚本/Web 根/密钥材料)、ELF 架构分布、内核与 BusyBox 版本串。**解包安全**:名字逐段清洗(`..`/绝对路径/盘符/保留名/大小写重名)、不建链接与设备节点、全局字节/文件数/深度/时限预算、输出目录必须为空。**限制**:不支持 LZO/zstd/LZ4 压缩的 SquashFS;JFFS2/UBIFS/CramFS 内容取不出;没有签名或安全启动校验;ext 的 inline-data/加密/多块组大文件只做了基础支持;未知厂商私有头和加密固件识别不了;大文件整体解压进内存(上限 256 MiB/文件);误报来自偶然通过校验的短签名,已用头部 CRC/解压验证压低但不为零 | | 加壳/保护识别(`ig5_scan` 的 `packing`,2026-10-25) | L3(真实文件:保护语料里的 PE/ELF + 本机 7,261 个 Windows 系统文件;另有 41 条自造 PE/ELF 单测和真实 Ghidra 验收) | 只读文件本身(不依赖引擎、不执行):PE 节表/入口点/节熵/导入表/TLS/覆盖层,ELF 段与入口;指标逐项带证据,总分给出 plain / suspected / protected / packed。**结论口径**:`packed` = 代码在文件里不可读(需先脱壳);`protected` = 已知保护器痕迹但入口仍在普通代码里(多为部分函数被虚拟化);**节名和字符串可被伪造,只算 `name-only` 线索**,判断靠结构(入口落点、空的可执行节、高熵可执行节、导入表极少)。**不脱壳**:`unpack.status` 只会是 `not-applicable` 或 `not-unpacked`,并给出下一步(客体调试/仿真)。实测:保护语料里 VMProtect(含 ELF)、Themida、UPX(含改过节名的)、ASPack 共 20 余个样本全部判为 packed/protected,对应未保护原件和 Tigress 源码级混淆的 ELF 全部判为 plain;7,261 个 Windows 系统文件中 7,243 个 plain、12 个 suspected(多为微软自己加密的授权/DRM 组件和内核镜像)、0 个 packed。**限制**:不识别 .NET 保护器(托管程序跳过导入表规则);不解析 Mach-O;不识别 Go/Rust 等编译器特有布局(未专门评测);打包后又被重新对齐/补丁的样本、仅在运行时才解密的保护(无静态痕迹)会漏报;商业保护器的版本/选项不识别;阈值在上述语料上校准过,**新壳型的误报漏报率未知** | | 签名规则匹配(`ig5_scan` 的 `ruleMatches`,2026-10-25) | L3(真实文件:保护语料中的 UPX/Themida/VMProtect/ASPack/PyInstaller 样本 + 300 个 Windows System32 抽样 + .NET Framework 真实托管程序集;真实 Ghidra `ig5_scan` 验收;另有 41 项 Python 测试,其中 40 项不依赖引擎、1 项为真实 Ghidra) | 受限 YARA 子集:文本(ascii/wide/nocase,转义)、十六进制(`??`/`?A`/`4?` 通配)、`$id`/`not`/`and`/`or`/括号/`all|any|N of them`;内置 16 条壳/保护器/安装器/运行时规则表,或调用方用新可选参数 `rules` **整体替换**(65,536 字节源、64 规则、256 字符串、模式 256 字节上限);结果含规则、标签、描述、命中字符串、EA/段、出现次数、`bytesScanned` 与截断标志。正则/跳转/选择/`fullword`/`xor`/计数/`at`/`in`/`for`/模块在编译期拒绝。**线索而非证明(E0)**:只匹配扫描器已读字节,采样未覆盖的区间不作结论;签名可被伪造;内置表不是恶意判定。精度上专门收紧了 `dotnet_managed`(`BSJB`+`#Strings`,不再用 mscoree 导入/入口桩):300 个 System32 抽样中 4 个命中且均为真实 CLR 元数据,原生对照组零命中。**限制**:无正则/变长跳转/节级作用域;未做误报漏报率评测;自定义规则的精度由调用方负责。Python 侧做过 7 项变异检查(全部被测试杀死)。`rules`/`max_rule_matches` 是参数增量(P7 时工具面为 41,2026-10-25 P2 拆分后为 43),随 P7 一并评审 | | 动态 API 轨迹(`ig5_dbg` 的 `op=apitrace`,2026-10-25) | L3(真实原生执行:自造 PE64 夹具在真实 x64dbg 无头调试器下跑完并退出;另有 26 项不启调试器、不执行目标的 Python 单测) | 静态解析 PE32/PE32+ 导入表(有界、只读文件),在**已暂停的持有进程**里读运行时 IAT 槽,对选中 API 入口设软件断点,记录命中顺序、入口参数(x64 `rcx/rdx/r8/r9`;x86 栈上 4 个 DWORD)、返回地址与调用线程;`api_names` 显式选择或按行为分类表广度优先(命中预算 1..1024、选中 API 1..256、单次等待 ≤120 s);结束后清理断点,并归并 E0 行为类别与线程内行为链。**E1 调用列表 ≠ 意图、成功或完整覆盖**。**限制**:只覆盖静态导入表且暂停时 IAT 已解析的槽——字符串 + `GetProcAddress` 动态解析、延迟导入、直接 `call` 进 DLL、syscall、未插桩模块都看不到;参数是原始入口值,不还原宽度/类型/返回值和语义结果;零槽如实进 `unresolved` 而不是猜地址;x86 运行态、guest(VMCI) 路径、ARM64 PE、.NET 托管入口**未验收**;软件断点会改 API 代码页首字节、可能被反调试发现;预算耗尽后进程停在最后一个 API 入口。未在真实恶意样本上评测漏报/误报 | | 流量↔样本对应(`ig5_capture` 的 `action=correlate`,2026-10-25) | L3(本地回环靶:真实采集代理下发自造 PE64 夹具字节→`materialize` 保存→离线对照;另有 7 项纯 Node 单测;不执行目标、不开引擎、不再发请求) | 只读对照一条已保存的交换与一个本地样本文件(≤32 MiB):**正文哈希同一性(E1)**——捕获正文与该文件字节完全相同;以及 **origin/主机/路径/请求头值/网络 API 导出名的字面量出现(E0)**——ASCII、UTF-16LE、ASCII 大小写不敏感,给出文件偏移,API 名要求词边界。查询串永不读取,cookie/authorization 永不读取,不输出正文预览。**同一性不证明客户端执行或加载了该文件;字面量不证明样本在运行时使用该端点/API;`unmatched` 明确写"没找到不是证明"**。**限制**:只做字面量,不支持正则/其他编码/压缩/加密内容;每次只对照一条记录,不自动把多条流量归给同一样本;不映射到函数或 RVA(只给文件偏移);加壳/压缩样本、动态拼接 URL、TLS 未解密内层都可能是空白;未在真实业务流量与真实样本上评测误报/漏报 | | APK/DEX 前端(`ig5_package`,2026-10-24) | L3(自造夹具 + **14 个真实 APK**:保护语料里的 52pojie 公开题,保护方式未确认,不是恶意样本、也不是加固壳样本。全部解析无错误/异常;15 个 DEX 共 844 万行(类、方法、逐指令宽度、调用/字段/字符串/类型引用)与 dexlib2 逐行一致;14 份清单与 AXMLPrinter2 一致;另与 Node X509Certificate 对照证书) | 容器(EOCD 混淆、zip 炸弹、CRC)、二进制 Manifest(权限、组件及其**有效** exported 状态、SDK、属性名按资源 ID 解析并报告改名)、v1/v2/v3 签名证书身份、每个 `classes*.dex` 逐方法指令扫描(调用/字段/字符串/类型,宽度表与 dexlib2 的 244 个操作码零分歧;逐指令流与 dexlib2 对照一致)、能力规则 → 方法级证据(类、方法、被调 API)、应用代码与知名库分开、能力链(同类内共现优先)、原生库清单、与名字不符的内嵌 DEX/ELF/ZIP、高熵资产、URL/IP 及加载它的方法。**限制**:**不验证签名**(只识别证书,报告 `signatures.verified=false`);不解码 `resources.arsc`;不分析原生库;不做反混淆;**未在恶意 APK、加固壳或畸形样本上验证**;规则表中的 Android 类名按 SDK 文档手写,**无机器可查的 SDK 副本做对照**,写错会表现为对真实 APK 不触发;R8 混淆过的库(如 androidx)不会被当作库,会计入应用代码;`ANDROID_ATTRIBUTE_IDS` 只收有把握的资源 ID,无独立对照;知名库前缀表是启发式(被混淆的库不会被识别为库);"packer stub"提示只看类数/原生库/Application,是线索不是识别(P5 另做);误报/漏报率未知 | | 字符串/配置自动解码(`ig5_emulate` 的 `mode=decode_strings`,2026-10-24) | L3(真实 Ghidra + Unicorn,**仅自造 PE64 夹具里手工汇编的解码例程**;另有 17 条单测和不依赖 Ghidra 的端到端仿真测试) | 按结构(循环、字节级运算、写内存、被多处调用)选候选,解析调用点常量参数(立即数、RIP 相对 LEA、栈缓冲区、`xor r,r`),逐点仿真并抽取新写入的 ASCII/UTF-16LE 文本,每条命中再复跑一次确认可复现(等级 E1)。**限制**:只支持 x86-64;**依赖导入函数、OS 或堆的解码器无法仿真**,会被如实报告为 `unsupported` 而不是"无输出";只提取写入内存的文本,返回指针型解码器未覆盖;参数只能解析同一基本块内的常量,跨块传来的值记为未知;栈缓冲区用 scratch 区替代;候选选择是结构启发式,**未在真实恶意样本或真实编译器输出上评测**,漏报率/误报率未知 | | x64dbg 调试链(自建 bridge) | L3(自产 PE 夹具) | ASLR/RVA 断点、寄存器、step、受限 trace、四槽硬件断点等;不外推任意样本。**2026-10-24 重测**:`scripts/test_x64dbg_runtime.mjs` 在源码目录与主力安装目录两条 runtime 路径上,64 位、32 位 headless 均通过(仅自造最小 PE;此前的 4551 来自已关闭的智能应用控制) | | 独立采集 capture(HTTP/TLS 本地靶) | L3(本地靶服务) | HTTP/2、任意网卡采集、完整 Burp 能力未实现 | ## 二、未闭环 / 未验证 | 项 | 状态 | |---|---| | VMP 3.11 | 仅历史录制数据可用;**新采集因 OOM 与 Demo 许可限制失败**,不得宣称现代 VMP 已恢复 | | Ghidra SLEIGH 通道 | 2026-10-16/19 被 Windows 策略 **4551**(智能应用控制 `VerifiedAndReputableDesktop`)阻断;该控制已于 2026-10-19 关闭、阻断记录已归档。**SLEIGH 通道此后尚未重测**,当前状态未知,不得宣称可用 | | assist 辅助模型 | **未证明净收益**(F13 同预算 A–E 消融与留出评测未做);保持 `assist=false` | | F03 语料 | 首批 10 个来源已审;向 30 篇扩展未完成 | | F09 跨块状态赋值回溯 / 真实保护目标 | 未闭环 | | F10 VM 实例与实验验收包 | 未按蓝图交付 | | F11 持续来源更新 | 未交付 | | F12 新增 UI 增量 | 未完成(旧工作台实机可见) | | Bochs 运行态 | 仅 load/bpt;不得由原生后端证据外推 | | 手机宿主 / 原生 Linux ELF 装载 | 未验证 | | 清洁 Windows VM 试验 | 未做 | | GUI 目标切换正向验收 | 未做 |