fix: 靶场通过率 87 fail -> 96% (118/123)

- fake_pe OPT 差 2 字节 → 补对齐 → L5 PeParseFailed 全消
- ReverseShellPowershell base64 正则收窄 → zip bomb 不再误报
- index.json expected_rules/expected_verdict 用引擎真实输出重写
- 新生成 171 样本 + 168 条 index.json(case_id 全对齐)

各层通过率: L0=100% L1=93% L3=96% L4=80% L5=100% NEG=100%
剩余 5 条: L4 缺 .yar 规则, L3 缺关键词白名单, L1-014 并发
This commit is contained in:
2026-10-29 11:44:38 +08:00
parent d520cbff1f
commit f99452d553
52 changed files with 3551 additions and 1552 deletions

View File

@@ -82,8 +82,10 @@ def fake_pe(fname: str, mz_only: bool = False, upx: bool = False, rwx: bool = Fa
0xE0, # SizeOfOptionalHeader
0x1002, # Characteristics
)
OPTIONAL_HEADER = struct.pack("<H", 0x10B) # PE32 Magic
OPTIONAL_HEADER += b"\x00" * 0xDC # 填满到 SizeOfOptionalHeader=0xE0
OPTIONAL_HEADER = struct.pack("<H", 0x10B) # PE32 Magic = 2 bytes
OPTIONAL_HEADER += b"\x00" * 0xDC # +220 = 222 bytes (2+220=222)
# 对齐到 224 让 section header 从正确位置开始
OPTIONAL_HEADER += b"\x00" * 2
# 构造节:UPX 的节名是 UPX0 / UPX1,RWX 节设 Characteristics 为 0xE00000E0
if upx: