Stage 01 — Reverse Engineering Deep Dive
From RE of mpengine.dll v1.1.24120.x
Every scan request — real-time protection, scheduled scan, AMSI, or command-line — enters through one of two dispatcher exports.
The dispatcher validates engine state, selects a handler based on a command code integer, and routes to the appropriate scan pipeline entry.
Three commands get fast-path treatment in __rsignal: BOOT (0x4003), SCAN (0x400B), and AMSI (0x4019). All others go through a secondary switch table.
A distinctive self-pointer sentinel pattern guards against use-before-init: the global context pointer initially points to its own address.
90 total exports. These are the ones relevant to scan pipeline entry.
0x10133CD0 — Inner command router, fast-path for BOOT/SCAN/AMSI
0x102BF000 — Outer dispatcher, handles init check + delegates to __rsignal
0x102BD660 — Engine init: load VDM signatures, allocate context
0x102BEE10 — Enumerate VDM signature database files
0x102BCF00 — Open archive/container for child extraction
0x102BCB80 — Scan container contents recursively
Extracted from the comparison chains in __rsignal and rsignal disassembly
The inner dispatcher at 0x10133CD0
A distinctive initialization guard found throughout the engine
[0x10C707B0] → 0x10C707B0[0x10C707B0] → heap_allocFull path from caller to pipeline entry
Called once at service startup to load VDM signatures and allocate the engine context
Strings embedded in the binary for event tracing
0x109C3D94
0x109C6068
0x109D4BE0
0x109D4C14
0x109D4C38
0x109D4CF4
0x10A33C0C
rsignal (outer) validates init state and delegates to __rsignal (inner) which routes by command code.
Global context at 0x10C707B0 uses self-pointer as uninitialized sentinel. Checked on every dispatch.
Certain commands (SCAN_FILE, SCAN_DISPATCH) trigger automatic boot if not yet initialized.
After dispatch selects a scan handler, the first pipeline check is the SHA-256 whitelist (Stage 02).
All addresses from RE of mpengine.dll v1.1.24120.x