Stage 03 — Reverse Engineering Deep Dive
From RE of mpengine.dll v1.1.24120.x
After passing the FRIENDLY_FILE whitelist, the file enters a cascade of 9 static signature engines (plus 2 downstream BRUTE families in Stage 9), each specialized for a different matching strategy.
The engines run in a defined order, sharing a common scan context. Each deposits attributes (string tags) that downstream engines and the AAGGREGATOR can reference.
This is a purely static analysis stage — no emulation, no script deobfuscation, no container extraction. The raw file bytes are analyzed as-is.
The cascade order is optimized: fastest engines first, most expensive last. High-confidence early matches can short-circuit later engines.
Static cascade is ordered by execution priority in Stage 3. BRUTE/NSCRIPT_BRUTE signature types are shown for downstream Stage 9 context.
0x109860DC — Legacy byte-pattern signatures (Aho-Corasick automaton)
0x109869C8 — PE header string matching (imports, exports, resources)
0x10986618 — Extended PE header strings (regex-like, cross-section)
0x109863EC — Second-gen: Unicode strings, demangled symbols, manifests
0x109868B4 — Kernel CRC checksums over entry point / code sections
0x109871A4 — Extended CRC with larger windows, polymorphic variants
0x1098718C — PE static analysis: entropy, imports, header anomalies
0x10987210 — Extended: Authenticode, resources, .NET metadata
0x10986AE4 — Behavioral monitoring static: packers, shellcode, injection
0x10986D8C — Stage 9 (downstream): feature-based polymorphic detection (PDF, VBS, JS)
0x10986AB0 — Stage 9 (downstream): NSCRIPT_BRUTE for deobfuscated script content
Engines 1-4: Byte patterns and PE header string analysis
The oldest engine. Pre-compiled Aho-Corasick automaton matches fixed byte sequences at known offsets. Fastest engine in the cascade.
Three generations of PE header string matching, progressively more capable:
Engines 5-8: Checksums, structural analysis, and extended PE inspection
Stage 3 BM_STATIC + Stage 9 BRUTE/NSCRIPT_BRUTE context
Detects behavioral precursors without execution: packer signatures, anti-debug patterns, shellcode, injection stubs.
Feature-based polymorphic matching. Extracts statistical features from PDF, VBS, and JS files rather than fixed patterns.
Combines BRUTE feature extraction with NScript analysis for obfuscated scripts that evade pattern matching.
Each engine deposits tagged attributes into the shared scan context
HSTR:Win32/Rbot.gen!dll
SIGATTR:PE:UPXPacked
KCRCE:0x1a2b3c4d
BRUTE:PDF:Feature:JsPresent
STATIC:Win32/Virut.A
BM:SuspiciousImports
HSTR:A AND KCRCE:B AND NOT SIGATTR:C
mp.getattribute("HSTR:...")
Beyond PE files, dedicated HSTR engines exist for every major file format
ETW trace events emitted during static cascade detection
0x10A34170 — Potentially Unwanted App
0x10A4B490 — Unsigned MOAC detection
0x10A53670 — Low-fi non-interactive
0x10A536E0 — Low-fi trusted
0x10A78300 — Python malware
0x10A784CC — JavaScript emu eval
0x10A77F28 — Deep script scan
0x10A78738 — Chained object limit
0x10A49468 — BM Lua sig attribute
0x10B6B598 — Lua folder latent
9 static engines run sequentially in Stage 3; BRUTE/NSCRIPT_BRUTE run later in Stage 9
Additional SIGNATURE_TYPE entries that support the cascade as sub-components
From fast byte-pattern matching (STATIC) to expensive feature-based polymorphic detection (BRUTE). Ordered for optimal performance.
Each engine deposits tagged attributes (HSTR:, KCRCE:, BRUTE:) that the AAGGREGATOR evaluates as boolean expressions.
The VDM contains entries for 160+ distinct SIGNATURE_TYPE values, covering every file format and analysis technique.
After the cascade, accumulated attributes feed into PE analysis, emulation, and ultimately the AAGGREGATOR verdict.
All addresses from RE of mpengine.dll v1.1.24120.x — 160+ SIGNATURE_TYPE strings