Microsoft-Antimalware-Engine ETW events

What Microsoft Defender / Defender for Endpoint Microsoft-Antimalware-Engine ETW log messages really mean.

  • The analysis has been performed by Deepseek V4.1 flash, which also wrote most of this article. GPT-6 did the review.
  • Reversing enabled by REA (Ghidra) via OpenCode and OpenRouter.
  • The content has been reviewed and cleaned up, until chapter “Technical Details”, which will be provided as-is.

About

Defender provides very detailed log messages, as identified by Levi in EDR-Introspection.

These log messages can be used by Red Teamers to attempt to reason about the inner working of Defender - and to bypass it easier.

Defender ETW

The following article shows details what each of the log messages mean, by reverse engineer Defender with AI.

The TL;DR is: use Microsoft-Antimalware-Engine. its free.

Other references:

Overview

  • 5 event families carry most of the detection value: 74 SenseRemediation, 8 BmDetection, 63 BmProcessTainting, 53 BmOpenProcess, 95 BmFileOverwrite.
  • 5 event families explain coverage gaps: 7 SkippedFile, 35-37 MOAC, 108 SenseExclusion, 38/39 cache, 91-94 UFS rundown.
  • 3 event families show the sensor being evaded: 46-52/58 registry blocks, 73 ProcessMonitorFlags, 60 BmEtw.
  • Most events have no verdict/status field. A scan start/stop pair does not tell you clean or malicious; join it to 74/8.

Terms

Term Meaning
BM Behavior Monitoring (BehaviorMonitorTask)
SMS The engine’s process-memory scanning/monitoring subsystem (SmsScanTask)
UFS The engine’s archive-aware file-system/scanner layer (UfsScanFile/UfsScanProc)
MOAC The scan-result/attribute cache keyed by file identity (CacheTask)
MDE / Sense Microsoft Defender for Endpoint
DC / rundown Data Collection: a snapshot of live state emitted at trace start/stop

Red-team summary

  1. The engine logs the trigger, not just the result. Scan source tells you whether RTP, IOAV, AMSI, Sense, BM or an on-demand scan caught you. There is no point blaming the file if the telemetry says SCANSOURCE_AMSI.
  2. Memory-only is not invisible. SMS explicitly scans process memory, and its level/trigger signature are logged. A memory scan start is a strong “you are being looked at” signal.
  3. Injection primitives create sticky taint. Remote thread, APC, SetThreadContext, WriteProcessMemory, MapView and ProtectVM are all enumerated taint reasons. Taint can precede a detection by many events.
  4. Command lines and registry old/new values are recorded. Event 70 has the full command line; event 105 has old and new registry data. Do not put secrets or payload config there.
  5. Exclusions are the cleanest bypass but the loudest control change. Event 108 records type, scope, target, detection name and user; event 7 records the resulting skip. Prefer pre-existing exclusions.
  6. ETW blinding is itself observable. BmEtw (60) shows the channels the engine consumes; ProcessMonitorFlags (73) records sensor flags and old/new values. Killing a channel or flipping a flag is high-signal.
  7. Assume event 74 leaves the host. It has hashes, paths, process command line, threat name and action status and is the local emission of the Sense remediation report. Keyword gating does not stop MDE collection.
  8. Short-lived processes are still captured. BM process context start/stop and process start/create events bracket execution; exiting quickly does not erase the context.

ETW Events

Task Name Description / Meaning
ScanRequest Envelope around engine scan work. Records the request GUID, request type, scan source, flags, resource count and first resource path. Shows what Defender scanned, what triggered it and how long it took, but carries no verdict.
GenericMessage Catch-all diagnostic string event plus older events that never got their own task: legacy UFS v1 scans, Lua signature calls, expensive signatures, UEFI firmware volumes and TCG boot logs. Check the event ID/version before decoding.
Version Reports the engine, antivirus and antispyware version strings. Establishes exactly which engine build produced the telemetry and whether signatures or the platform are stale.
StreamScanRequest Marks the start/end of scanning streamed content rather than a normal file. Includes the stream path, the consuming process image and PID, and a numeric reason code; useful for AMSI, browser and archive-stream visibility.
SkippedFile Records a file the engine deliberately did not scan, with a free-form reason. This is the engine’s explicit coverage-gap signal and a primary hunting source for exclusion abuse and unsupported or oversized files.
BehaviorMonitor Behavior-monitoring telemetry and verdicts: process, driver/module, file, folder, registry, network, named-pipe, injection, taint, cloud and monitoring-state events. Effectively a built-in EDR feed.
Cache Shows verdict/attribute cache activity. MOAC entries are keyed by file identity (FileID/USN), so these events explain why a file was or was not rescanned and expose cache invalidation and poisoning edges.
PersistedStore Cross-reboot engine state such as saved verdicts, analysis state and archive children. Action and maintenance events expose persistence, eviction and integrity changes.
ExpensiveOperation Begin/end timing for deliberately costly engine operations, including CPU and wall-clock deltas. Useful for scan-performance triage and for spotting attacker-driven algorithmic complexity.
MetaStore Engine metadata vaults for attributes, reputation and per-feature records. Events show vault actions and maintenance/eviction, which can affect verdict reuse.
SenseRemediation The engine’s full detection/remediation report to MDE/Sense: hashes, paths, signatures, verdict, action, process command line and classification. The single richest event in the provider; keyword-gated.
SenseHeartbeat Periodic Sense/EDR health payload in JSON. Shows sensor liveness, version and configuration drift; missing heartbeats can indicate tampering or an outage.
SmsScan Process-memory monitoring and scanning. Shows when a process or path is placed under memory scrutiny, which signature requested it, the scan depth, why monitoring stopped and the scan result.
StartRundown Marks the start-of-trace data-collection rundown. Providers dump live objects so the consumer can see scans, processes and monitoring state that existed before capture.
EndRundown Marks the end-of-trace rundown and final state dump. Compare it with the start rundown to see what changed during the capture.
Engine Engine instance lifecycle: start/stop and rundown start/stop, with engine pointer and version triplet. Distinguishes one engine instance from another and exposes restarts or crashes.
UfsScanFile Per-file scan start/stop from the UFS scanner, with engine ID, file path and timing. Gives file-level scan coverage and latency, but no verdict.
UfsScanProc Per-process scan start/stop, adding a PID to the UFS file-scan shape. Shows which processes are being scanned and for how long.
SenseOnboardingInfo Sense/MDE onboarding information blob. Indicates whether the host is onboarded to Defender for Endpoint and can reveal offboarding or bypass.
EngineLoad Engine DLL load start/finish with engine ID and version triplet. Distinguishes DLL mapping from engine initialization and exposes replacement or version changes.
SenseExclusion Audit record for an exclusion applied by Sense/MDE: type, scope, resource type, target, parent, detection name and user. The key event for exclusion-abuse hunting.

Collecting

Real-time ETW session (the 0xff level and all-ones keyword mask enable everything):

logman create trace DefEng -p "{0A002690-3839-4E3A-B3B6-96D8DF868D99}" 0xFFFFFFFFFFFFFFFF 0xff -o C:\temp\defeng.etl -ets
:: ... reproduce ...
logman stop DefEng -ets

Or with WPR using Microsoft’s own profile from the platform directory:

wpr -start "C:\ProgramData\Microsoft\Windows Defender\Platform\<version>\Powershell\MSFT_MpPerformanceRecording.wprp"!Scans.Verbose.File
wpr -stop C:\temp\defeng.etl

Technical Details

Raw dump of AI analysis. Enjoy.

Provenance and scope

Item Value
Target mpengine.dll (Microsoft Defender engine)
Build metadata Not independently verified in this review; use the DLL SHA-256 below as the precise target identity
SHA-256 be18e430522fd36d8e439fb2e80a25c6b274910b9091fbacc69b334223e1dbff

The extracted manifest declares Microsoft-Antimalware-Engine as a manifest-based ETW provider and contains no Event Log channel declaration. This resource alone does not establish how the provider is registered on a particular host or what Event Viewer displays.

Provider : Microsoft-Antimalware-Engine
GUID     : {0A002690-3839-4E3A-B3B6-96D8DF868D99}

Use the provider GUID shown above when enabling this provider. No WPR profile or registration state was available for verification in this review.

TL;DR

  • Useful starting points for investigation include 74 SenseRemediation, 8 BmDetection, 63 BmProcessTainting, 53 BmOpenProcess and 95 BmFileOverwrite. Their names and fields do not establish detection fidelity or coverage.
  • Events 7, 35-39, 108 and 91-94 may provide context when investigating skipped work, cache activity, exclusions or in-flight scans; they do not by themselves establish a coverage gap.
  • Events 46-52/58, 73 and 60 may be relevant when investigating registry protection or monitoring state. Their presence does not establish sensor evasion or tampering.
  • Many scan start/stop schemas have no verdict field. Event 82 is an exception: its manifest includes ScanResult. A scan result or absence of a detection is not proof of cleanliness.
  • Event ID 30-33 are reused: same ID, different task and version (legacy GenericMessage vs UFS v2/v3). Always key on (provider, task, opcode, id, version).
  • EngineId is typed as a pointer in the manifest. Treat its value as transient; do not use it as a durable host identifier.

Keyword gating

Most events have keyword 0. For the entries below, a consumer whose enabled keyword mask omits the listed bit does not request those events.

Keyword Mask Events
SenseRemediation 0x1 74
UefiFirmware 0x2 69
TCGLogs 0x4 75
SenseHeartbeat 0x8 76
BmFileOverwrite 0x10 95
SenseOnboardingInfo 0x20 96
SenseExclusion 0x40 108
StartRundown 0x0000040000000000 83, 84, 89, 91, 93, 97, 99, 106
EndRundown 0x0000080000000000 85, 86, 90, 92, 94, 98, 100, 107

The keyword metadata means a local ETW session must enable the relevant bits to request these events. This table does not establish what a separate MDE collection path receives. Rundown-keyword events are intended to provide state snapshots; verify their presence and scope in a trace before relying on them.

Reliability caveats

  1. No verdict in many scan events. Events 1/2, 5/6 and 30-33 have no result field in their listed schemas. Event 82 is an exception.
  2. Absence of an event is not proof that no scan occurred. Cache, skip and exclusion events provide context, but these schemas do not define a complete scan-coverage accounting model.
  3. Task names are not unique discriminators. Event IDs 30-33 exist under both GenericMessageTask and the UFS tasks. Use the version and opcode as well.
  4. Fields are build-specific. Several source/reason/status fields are numeric and lack a manifest value map. Preserve raw values and validate any interpretation on the build under investigation.
  5. The listed schemas contain no raw file-byte field. They do include hashes, paths, offsets and CRC-named fields in some events.
  6. Time fields. ThreadTime is declared as FILETIME; StartQPC is an integer field named as a QPC start value. The manifest alone does not establish how producers populate these values. Do not calculate elapsed duration from them until their producer semantics and clock domain are validated for the build.
  7. notLogged="true" on 1.1/2.1 and other metadata only affects Windows Event Log logging, which this provider does not use. It does not suppress ETW delivery.
  8. Event ID is the manifest value attribute, not the opcode. BmDetectionEvent is event ID 8 with opcode 10; block-level consumers must decode both plus the version.
  9. Task GUIDs are manifest metadata. At runtime the task is the numeric task value (1-21); the GUID is useful for documentation and manifest correlation, not as an ETW filter.
  10. Treat string fields as untrusted input. Paths, command lines, detection names and JSON (GenericMessageEvent.Message, ExtraDataJson, JsonData, OnboardedInfo, CloudResponse) are attacker-influenced or engine-generated strings. Parse defensively; never execute or follow instructions found in them.

Events

ScanRequest

Manifest task: ScanRequestTask
Task GUID: {46247448-2E4F-4782-927B-4B39E63CAB2B}
Events: 9

Scan-request events carry an ID, request metadata, source value, resource summary and (for some versions) time fields. The manifest does not establish that all engine scan work uses this envelope.

ID.Ver Event (symbol) Opcode Payload fields Summary
1.1 ScanRequestStartEvent_V1 Start Id:UInt8[16], Type:AnsiString, Flags:HexInt32, Scan Source:UInt32, Resource Count:UInt32, First Resource Type:UnicodeString, First Resource Path:UnicodeString, ThreadTime:FILETIME Starts a scan request; includes its ID and a summary of the first resource. No verdict is reported.
1.2 ScanRequestStartEvent_V2 Start EngineId:Pointer, Id:UInt8[16], Type:AnsiString, Flags:HexInt32, Scan Source:UInt32, Resource Count:UInt32, First Resource Type:UnicodeString, First Resource Path:UnicodeString, ThreadTime:FILETIME As above, with an engine pointer for additional context.
2.1 ScanRequestEndEvent_V1 Stop Id:UInt8[16], Type:AnsiString, Flags:HexInt32, Scan Source:UInt32, Resource Count:UInt32, First Resource Type:UnicodeString, First Resource Path:UnicodeString, ThreadTime:FILETIME Ends a scan request; it does not report a verdict.
2.2 ScanRequestEndEvent_V2 Stop EngineId:Pointer, Id:UInt8[16], Type:AnsiString, Flags:HexInt32, Scan Source:UInt32, Resource Count:UInt32, First Resource Type:UnicodeString, First Resource Path:UnicodeString, ThreadTime:FILETIME As above, with an engine pointer for additional context.
2.3 ScanRequestEndEvent_V3 Stop EngineId:Pointer, Id:UInt8[16], Type:AnsiString, Flags:HexInt32, Scan Source:UInt32, Resource Count:UInt32, First Resource Type:UnicodeString, First Resource Path:UnicodeString, ThreadTime:FILETIME, StartQPC:UInt64 Adds a start-time field; validate its timing semantics before calculating duration.
97.0 ScanRequestDCStartEvent_V0 DC_Start EngineId:Pointer, Id:UInt8[16], Type:AnsiString, Flags:HexInt32, Scan Source:UInt32, Resource Count:UInt32, First Resource Type:UnicodeString, First Resource Path:UnicodeString Rundown snapshot of a scan request that was already in progress.
97.1 ScanRequestDCStartEvent_V1 DC_Start EngineId:Pointer, Id:UInt8[16], Type:AnsiString, Flags:HexInt32, Scan Source:UInt32, Resource Count:UInt32, First Resource Type:UnicodeString, First Resource Path:UnicodeString, ThreadId:UInt32, StartQPC:UInt64 Rundown snapshot with extra thread and timing context.
98.0 ScanRequestDCStopEvent_V0 DC_Stop EngineId:Pointer, Id:UInt8[16], Type:AnsiString, Flags:HexInt32, Scan Source:UInt32, Resource Count:UInt32, First Resource Type:UnicodeString, First Resource Path:UnicodeString Rundown snapshot of scan-request state at trace end.
98.1 ScanRequestDCStopEvent_V1 DC_Stop EngineId:Pointer, Id:UInt8[16], Type:AnsiString, Flags:HexInt32, Scan Source:UInt32, Resource Count:UInt32, First Resource Type:UnicodeString, First Resource Path:UnicodeString, ThreadId:UInt32, StartQPC:UInt64 Rundown snapshot with extra thread and timing context.

Id is a candidate correlation key across start/stop/DC events; confirm equality and uniqueness in captured data. The payload summarizes the first resource; when Resource Count exceeds one, First Resource Path does not enumerate the remainder.

GenericMessage

Manifest task: GenericMessageTask
Task GUID: {AA24AD4E-21E9-4B42-B9A8-1B04DE7C188F}
Events: 11

Catch-all diagnostic string event, plus several older events that were never given their own task (legacy UFS v1, Lua signature calls, expensive signatures, UEFI volumes, TCG logs). Treat the ID+version as the real discriminator, not the task.

ID.Ver Event (symbol) Opcode Payload fields Summary
3.0 GenericMessageEvent Info Message:UnicodeString Free-form engine diagnostics; useful context, but the text can vary by build.
30.1 UfsScanStartEvent_V1 UfsScanStart FilePath:UnicodeString, ThreadTime:FILETIME Legacy file-scan start record; newer dedicated UFS event forms also exist.
31.1 UfsScanStopEvent_V1 UfsScanStop FilePath:UnicodeString, ThreadTime:FILETIME Legacy file-scan stop record; pair with a start event only after checking the trace.
32.1 UfsScanProcStartEvent_V1 UfsScanStart FilePath:UnicodeString, PID:UInt32, ThreadTime:FILETIME Legacy process-scan start record; newer dedicated UFS event forms also exist.
33.1 UfsScanProcStopEvent_V1 UfsScanStop FilePath:UnicodeString, PID:UInt32, ThreadTime:FILETIME Legacy process-scan stop record; pair with a start event only after checking the trace.
59.0 LuaCallSigattrBM Info VName:AnsiString, SigSeq:HexInt64, SigSha:AnsiString, Result:Int8 Signature-attribute diagnostic with a result value.
68.0 ExpensiveSignature_V0 Info SigName:AnsiString, SigSeq:HexInt64, SigSha:AnsiString, SigTypeName:AnsiString, Time:UInt64, Limit:UInt64, FileName:UnicodeString, VPath:UnicodeString, FileSha1:AnsiString, PartialCRC1:HexInt32, PartialCRC2:HexInt32, PartialCRC3:HexInt32, FileSize:UInt64 Reports an expensive-signature operation and related file details.
68.1 ExpensiveSignature Info SigName:AnsiString, SigSeq:HexInt64, SigSha:AnsiString, SigTypeName:AnsiString, Dimension:AnsiString, Value:UInt64, Limit:UInt64, FileName:UnicodeString, VPath:UnicodeString, FileSha1:AnsiString, PartialCRC1:HexInt32, PartialCRC2:HexInt32, PartialCRC3:HexInt32, FileSize:UInt64 Updated expensive-signature record with additional measurement fields.
69.0 UefiFirmwareVolume_V0 Info Guid:AnsiString, VolumeSize:UInt64, Attributes:HexInt32, FilesCount:HexInt32, FileGuidsArray:AnsiString, FileSizeArray:AnsiString, CompressedFileSizeArray:AnsiString, FileNameArray:UnicodeString, FileAttributesArray:AnsiString, EfiFileTypeArray:AnsiString, FileSha1Array:AnsiString, SmbiosAttributes:AnsiString Firmware-volume inventory, including file-related metadata.
69.1 UefiFirmwareVolume Info Guid:AnsiString, VolumeSize:UInt64, Attributes:HexInt32, FilesCount:HexInt32, FileGuidsArray:AnsiString, FileSizeArray:AnsiString, CompressedFileSizeArray:AnsiString, FileNameArray:UnicodeString, FileAttributesArray:AnsiString, EfiFileTypeArray:AnsiString, FileSha1Array:AnsiString, SmbiosAttributes:AnsiString, FileCRCsArray:AnsiString Firmware-volume inventory with an additional CRC array.
75.0 TCGLogsEvent Info DeviceInfo:AnsiString, TCGEventsArray:AnsiString, PCRsArray:AnsiString Carries measured-boot event and PCR data.

Events 30.1, 31.1, 32.1 and 33.1 are v1 UFS-named event rows on the GenericMessage task. This manifest also defines dedicated UFS task events; which forms are emitted at runtime is not established here. Event 3 is a raw string field, not a stable schema.

Version

Manifest task: VersionTask
Task GUID: {E69D26EF-9589-4EC4-86D7-3944A1108834}
Events: 1

Engine / antivirus / antispyware version triplet. Emitted when the engine reports its version (startup, update, or on demand).

ID.Ver Event (symbol) Opcode Payload fields Summary
4.0 VersionEvent Info Engine Version:UnicodeString, AV Version:UnicodeString, AS Version:UnicodeString Reports engine, antivirus and antispyware versions for build identification.

StreamScanRequest

Manifest task: StreamScanRequestTask
Task GUID: {D09090ED-F99D-449B-9139-C6BEC8F68208}
Events: 2

Stream-scan-named start/stop events with path, process, reason, time and PID fields. The schema does not establish content origin or what Process represents.

ID.Ver Event (symbol) Opcode Payload fields Summary
5.1 StreamScanRequestStartEvent Start Id:UInt32, Path:UnicodeString, Process:UnicodeString, Reason:UInt32, ThreadTime:FILETIME, PID:UInt32 Starts a scan request for streamed content, with path and process context.
6.1 StreamScanRequestEndEvent Stop Id:UInt32, Path:UnicodeString, Process:UnicodeString, Reason:UInt32, ThreadTime:FILETIME, PID:UInt32 Ends the streamed-content scan request.

SkippedFile

Manifest task: SkippedFileTask
Task GUID: {C8F3A161-7393-41F3-A51B-0220C5899D81}
Events: 1

The event is named SkippedFileEvent and carries a path and reason string. Treat the reason as build-specific and do not assume every skip or exclusion is represented.

ID.Ver Event (symbol) Opcode Payload fields Summary
7.0 SkippedFileEvent Info Path:UnicodeString, Reason:AnsiString Records a skipped file and the associated reason.

BehaviorMonitor

Manifest task: BehaviorMonitorTask
Task GUID: {F8F27CEB-FD4B-4657-965F-DAEE2E728FD3}
Events: 60

BehaviorMonitor is the largest task in this manifest (60 event rows). Its event names cover process, file, registry, network, injection, taint, cloud and monitoring-related topics; this does not establish a complete sensor feed or verdict semantics.

ID.Ver Event (symbol) Opcode Payload fields Summary
8.0 BmDetectionEvent BmDetection PID:UInt32, GUID:GUID, Type:UInt32, Name:UnicodeString, SignatureId:HexInt64, ImagePath:UnicodeString Behavior-monitor detection record with process and detection details.
9.0 BmProcessStartEvent BmProcessStart PID:UInt32, PPID:UInt32, ImagePath:UnicodeString, Flags:HexInt32 Process start and parent-process context.
10.0 BmDriverLoadEvent BmDriverLoad PID:UInt32, ImagePath:UnicodeString Driver-load activity.
11.0 BmModuleLoadEvent BmModuleLoad PID:UInt32, ImagePath:UnicodeString Module-load activity.
12.0 BmDocumentOpenEvent BmDocumentOpen PID:UInt32, ImageName:UnicodeString, FileName:UnicodeString Document-open activity with process and file context.
13.0 BmFileCreateEvent BmFileCreate PID:UInt32, FileName:UnicodeString File creation.
14.0 BmFileChangeEvent BmFileChange PID:UInt32, FileName:UnicodeString File modification.
15.0 BmFileDeleteEvent BmFileDelete PID:UInt32, FileName:UnicodeString File deletion.
16.0 BmFileRenameEvent BmFileRename PID:UInt32, FileName:UnicodeString, OldFileName:UnicodeString File rename, including old and new names.
17.0 BmRegistryKeyCreateEvent BmRegistryKeyCreate PID:UInt32, KeyPath:UnicodeString Registry key creation.
18.0 BmRegistryKeyRenameEvent BmRegistryKeyRename PID:UInt32, KeyPath:UnicodeString Registry key rename.
19.0 BmRegistryKeyDeleteEvent BmRegistryKeyDelete PID:UInt32, KeyPath:UnicodeString Registry key deletion.
20.0 BmRegistryValueSetEvent BmRegistryValueSet PID:UInt32, KeyPath:UnicodeString, ValueName:UnicodeString Registry value set, with key and value names.
21.0 BmRegistryValueDeleteEvent BmRegistryValueDelete PID:UInt32, KeyPath:UnicodeString, ValueName:UnicodeString Registry value deletion.
22.0 BmNetworkConnectEvent BmNetworkConnect PID:UInt32 Network connection activity associated with a process.
23.0 BmNetworkDataEvent BmNetworkData PID:UInt32 Network data activity associated with a process.
24.0 BmNetworkListenEvent BmNetworkListen PID:UInt32 Network listen activity associated with a process.
25.0 BmNetworkAcceptEvent BmNetworkAccept PID:UInt32 Network accept activity associated with a process.
26.0 BmProcessTerminateEvent BmProcessTerminate PID:UInt32 Process termination.
27.0 BmNetworkDetectionEvent BmNetworkDetection PID:UInt32, DetectionId:HexInt64 Network-related detection record.
28.0 BmBootRecordChangeEvent BmBootRecordChange PID:UInt32, RecordType:UInt32, ImagePath:UnicodeString, Path:UnicodeString Boot-record change activity and related paths.
29.0 BmRemoteThreadCreateEvent BmRemoteThreadCreate PID:UInt32, TPID:UInt32, TTID:UInt32, ImageName:UnicodeString Remote-thread creation, a useful injection-investigation event.
46.0 BmRegistryBlockSetEvent BmRegistryBlockSet PID:UInt32, KeyPath:UnicodeString Registry block-related set activity.
47.0 BmRegistryBlockDeleteEvent BmRegistryBlockDelete PID:UInt32, KeyPath:UnicodeString Registry block-related delete activity.
48.0 BmRegistryBlockRenameEvent BmRegistryBlockRename PID:UInt32, KeyPath:UnicodeString Registry block-related rename activity.
49.0 BmRegistryReplaceEvent BmRegistryReplace PID:UInt32, KeyPath:UnicodeString Registry replacement activity.
50.0 BmRegistryRestoreEvent BmRegistryRestore PID:UInt32, KeyPath:UnicodeString Registry restoration activity.
51.0 BmRegistryBlockReplaceEvent BmRegistryBlockReplace PID:UInt32, KeyPath:UnicodeString Registry block-related replacement activity.
52.0 BmRegistryBlockRestoreEvent BmRegistryBlockRestore PID:UInt32, KeyPath:UnicodeString Registry block-related restoration activity.
53.0 BmOpenProcessEvent BmOpenProcess PID:UInt32, TargetPID:UInt32, AccessMask:UInt32, WasHardened:Boolean Process access attempt, including target and access details.
58.0 BmRegistryBlockCreateEvent BmRegistryBlockCreate PID:UInt32, KeyPath:UnicodeString Registry block-related create activity.
60.0 BmEtwEvent BmEtw PID:UInt32, Channel:UnicodeString, EventId:UInt32 ETW-related activity with channel and event identifiers.
61.0 BmFolderCreateEvent BmFolderCreate PID:UInt32, FolderName:UnicodeString Folder creation.
62.0 BmScavengerTaskEvent BmScavengerTask Count:UInt32 Scavenger-task activity with a count.
63.0 BmProcessTaintingEvent BmProcessTainting TaintReason:UInt64, ReasonImagePath:UnicodeString, ProcessImagePath:UnicodeString Process-tainting record with reason and process paths.
64.0 BmFolderRenameEvent BmFolderRename PID:UInt32, FileName:UnicodeString, OldFileName:UnicodeString Folder rename, including old and new names.
65.0 BmFolderEnumEvent BmFolderEnum PID:UInt32, FolderName:UnicodeString Folder enumeration activity.
66.0 BmFileHardLinkEvent BmFileHardLink PID:UInt32, FileName:UnicodeString, FileHardLinkName:UnicodeString File hard-link activity.
70.0 BmProcessCreateEvent BmProcessCreate BasePath:UnicodeString, CommandLine:UnicodeString, PID:UInt32, ParentPID:UInt32, Flags:UInt32, IntegrityLevel:UInt32 Process creation with command-line and parent-process context.
71.0 BmFileCreateExEvent BmFileCreateEx PID:UInt32, FileName:UnicodeString Extended file-creation activity.
72.0 BmFileChangeExEvent BmFileChangeEx PID:UInt32, FileName:UnicodeString Extended file-modification activity.
73.0 ProcessMonitorFlagsEvent_V0 ProcessMonitorFlags PID:UInt32, filepath:UnicodeString, flags:HexInt32, flags2low:HexInt64, flags2high:HexInt64 Process monitoring flags; the schema does not explain individual bits.
73.1 ProcessMonitorFlagsEvent_V1 ProcessMonitorFlags EngineId:Pointer, CreationTime:FILETIME, PID:UInt32, filepath:UnicodeString, flags:HexInt32, flags2low:HexInt64, flags2high:HexInt64, oldFlags:HexInt32, oldFlags2low:HexInt64, oldFlags2high:HexInt64 Monitoring flags with prior values and process context.
73.2 ProcessMonitorFlagsEvent ProcessMonitorFlags EngineId:Pointer, CreationTime:FILETIME, PID:UInt32, filepath:UnicodeString, flags:HexInt32, flags2low:HexInt64, flags2high:HexInt64, oldFlags:HexInt32, oldFlags2low:HexInt64, oldFlags2high:HexInt64, Source:UnicodeString Monitoring flags with prior values and a source string.
95.0 BmFileOverwriteEvent BmFileOverwrite ProcessId:UInt32, CreationTime:FILETIME, FileName:UnicodeString, FirstOffsetWritten:UInt64, LastOffsetWritten:UInt64, SmallestOffsetWritten:UInt64, BiggestOffsetWritten:UInt64, TotalSizeOfWrites:UInt64, TotalSizeOfAppends:UInt64, NumberOfWrites:UInt32 File overwrite statistics, useful for understanding write activity.
99.0 ProcessMonitorFlagsDCStartEvent_V0 ProcessMonitorFlagsDCStart EngineId:Pointer, CreationTime:FILETIME, PID:UInt32, flags:HexInt32, flags2low:HexInt64, flags2high:HexInt64 Rundown snapshot of process monitoring flags.
100.0 ProcessMonitorFlagsDCStopEvent_V0 ProcessMonitorFlagsDCStop EngineId:Pointer, CreationTime:FILETIME, PID:UInt32, flags:HexInt32, flags2low:HexInt64, flags2high:HexInt64 Rundown snapshot of process monitoring flags.
103.0 BmFileSequentialReadEvent BmFileSequentialRead PID:UInt32, FileName:UnicodeString Sequential file-read activity.
104.0 BmInternalEvent BmInternal PID:UInt32, FeatureId:UInt32, FirstParam:UnicodeString, SecondParam:UnicodeString Internal behavior-monitor event with feature and parameter fields.
105.0 BmRegistryEvent BmRegistry PID:UInt32, EventId:UnicodeString, KeyPath:UnicodeString, ValueName:UnicodeString, OldValue:UnicodeString, NewValue:UnicodeString, UserMode:UnicodeString, FeatureType:UInt32 Registry activity with key/value and old/new data.
106.0 BmInternalStateDCStartEvent_V0 BmInternalStateDCStart EngineId:Pointer, LiveContextCount:UInt32, TotalContextCount:UInt32 Rundown snapshot of behavior-monitor context counts.
107.0 BmInternalStateDCStopEvent_V0 BmInternalStateDCStop EngineId:Pointer, LiveContextCount:UInt32, TotalContextCount:UInt32 Rundown snapshot of behavior-monitor context counts.
109.0 BmProcessContextStartEvent BmProcessContextStart PID:UInt32, ProcessContextId:Pointer, ImagePath:UnicodeString Starts a behavior-monitor context for a process.
110.0 BmProcessContextStopEvent BmProcessContextStop PID:UInt32, ProcessContextId:Pointer, TerminationTime:UInt64 Ends a behavior-monitor process context.
111.0 BmNotificationHandleStartEvent BmNotificationHandleStart PID:UInt32, AttrId:UInt32, AttrSeq:UInt32, AttrSubset:UInt32 Starts notification handling for behavior attributes.
112.0 BmNotificationHandleStopEvent BmNotificationHandleStop PID:UInt32, AttrId:UInt32, AttrSeq:UInt32, AttrSubset:UInt32, MatchedThreatsNumber:UInt32, IsMultiProcMatch:Boolean, IsMultiProcDetection:Boolean Ends notification handling and reports match-related counts and flags.
113.0 BmCloudCallStartEvent BmCloudCallStart PID:UInt32, DetectionName:UnicodeString, SigSeq:UInt64 Marks the start of a cloud-call-related operation.
114.0 BmCloudCallStopEvent BmCloudCallStop PID:UInt32, DetectionName:UnicodeString, SigSeq:UInt64, CloudResponse:UnicodeString Marks the end of a cloud-call-related operation and includes a response.
115.0 BmDbChangedEvent BmDbChanged PID:UInt32, FileName:UnicodeString Database-file change activity.
116.0 BmPipeNotifyEvent BmPipeNotify PID:UInt32, Operation:UInt32, DesiredAccess:UInt32, PipeName:UnicodeString Named-pipe activity with operation and access details.

These events can be used as candidate pivots (for example, process-create-named event 70, taint-named 63, process-access-named 53, detection-named 8 and report-shaped 74). This sequence is not a verified causal chain; validate identifiers and ordering in captured data.

Events 95, 103, 53, 29 and 63 have names/fields that may be relevant to file-write, process-access or injection investigations. None alone identifies ransomware, credential dumping or injection.

Cache

Manifest task: CacheTask
Task GUID: {AC4D01C5-4197-4CF4-B4CA-0F2F38410304}
Events: 5

Cache-related events. Several payloads include a file name, FileID, FileUSN and a result field; the schema does not establish the full cache key or whether a later scan was skipped.

ID.Ver Event (symbol) Opcode Payload fields Summary
35.0 MOACAddEvent MOACAdd ScanSource:UInt32, EventType:UInt32, Classification:UInt32, Info:UnicodeString, FileName:UnicodeString, FileID:UInt32, FileUSN:UInt32, Result:HexInt32 Records an entry being added to the MOAC cache.
36.0 MOACLookupEvent MOACLookup ScanSource:UInt32, EventType:UInt32, Classification:UInt32, Info:UnicodeString, FileName:UnicodeString, FileID:UInt32, FileUSN:UInt32, Result:HexInt32 Records a MOAC cache lookup.
37.0 MOACRevokeEvent MOACRevoke ScanSource:UInt32, EventType:UInt32, Classification:UInt32, Info:UnicodeString, FileName:UnicodeString, FileID:UInt32, FileUSN:UInt32, Result:HexInt32 Records a MOAC cache-entry revocation.
38.0 CacheLookupEvent CacheLookup FileName:UnicodeString, CacheName:UnicodeString, Result:UnicodeString Records a lookup in a named cache.
39.0 CacheAddEvent CacheAdd FileName:UnicodeString, CacheName:UnicodeString, Result:UnicodeString Records an addition to a named cache.

The schema exposes FileName, FileID and FileUSN; it does not establish that these fields form the complete cache key. Both numeric fields are declared UInt32, so do not equate them with full NTFS identifiers without confirming producer encoding. Cache behavior and cache-poisoning hypotheses require further validation.

PersistedStore

Manifest task: PersistedStoreTask
Task GUID: {C178303B-BEF6-4B11-AAB7-13E9DF4C69AD}
Events: 3

Events named for persisted-store actions, maintenance and file analysis. The manifest does not establish whether the state survives reboots or what each action/result means.

ID.Ver Event (symbol) Opcode Payload fields Summary
40.0 PersistedStoreActionEvent PersistedStoreAction action:UnicodeString, key:UInt64, filename:UnicodeString, result:UInt32 Records an action involving a persisted-store file entry.
41.0 PersistedStoreMaintenanceEvent PersistedStoreMaintenance utilization:UInt32, result:UInt32 Reports persisted-store maintenance and utilization.
42.0 PersistedStoreAnalyzeFileEvent PersistedStoreAnalyzeFile key:UInt64, filename:UnicodeString, parentKey:UInt64, result:UInt32 Records file analysis in the persisted store, with related keys.

ExpensiveOperation

Manifest task: ExpensiveOperationTask
Task GUID: {C0BB4EDC-169E-41A8-B568-7B60F114E798}
Events: 2

Events named for expensive operations. Event 67 carries fields named DeltaCPU and DeltaWall; their units and producer semantics are not defined in the manifest.

ID.Ver Event (symbol) Opcode Payload fields Summary
43.1 ExpensiveOperationBegin ExpensiveOperationBegin Message:UnicodeString, Name:UnicodeString, Data:UInt64, StartStop:Boolean, ThreadTime:FILETIME Marks the beginning of an operation flagged as expensive.
67.1 ExpensiveOperationEnd ExpensiveOperationEnd Message:UnicodeString, Name:UnicodeString, Data:UInt64, StartStop:Boolean, ThreadTime:FILETIME, DeltaCPU:UInt64, DeltaWall:UInt64 Marks the end and includes CPU and wall-time delta fields.

MetaStore

Manifest task: MetaStoreTask
Task GUID: {A8D7BE65-D218-4B96-9E4D-739453482F97}
Events: 2

Metadata-store-named action and maintenance events. The manifest does not define vault contents or their effect on verdicts.

ID.Ver Event (symbol) Opcode Payload fields Summary
44.0 MetaStoreActionEvent MetaStoreAction action:UnicodeString, vault:UInt32, key:UInt64, result:UInt32 Records an action against a metadata vault.
45.0 MetaStoreMaintenanceEvent MetaStoreMaintenance vault:UInt32, records:UInt64, result:UInt32 Reports metadata-vault maintenance and record count.

SenseRemediation

Manifest task: SenseRemediationTask
Task GUID: {827C3389-3F33-4508-84EE-3311E1C3E5C5}
Events: 1

Sense-remediation-named event with hash, path, signature, report, process, action/status and extra-data fields. It is keyword-gated. The schema does not establish that a record is successfully delivered to a cloud service.

ID.Ver Event (symbol) Opcode Payload fields Summary
74.0 SenseRemediationEvent Info Sha1:UnicodeString, Sha256:UnicodeString, SigSeq:HexInt64, SigSha:UnicodeString, AllSigSeqs:UnicodeString, AllSigShas:UnicodeString, RealPath:UnicodeString, VPath:UnicodeString, EtwDataReportType:UInt32, ReportType:UInt32, EngineReportGuid:UnicodeString, ResourceData:UnicodeString, ResourceSchema:UnicodeString, Determination:Int32, ActionStatus:HexInt32, ProcessID:UInt32, ProcessCreationTime:UInt64, ProcessPath:UnicodeString, ThreatName:UnicodeString, Classification:HexInt32, IsLatent:Boolean, IsPassiveMode:Boolean, ScanSource:UInt32, ScanType:UInt32, RtpProcessID:UInt32, RtpProcessCreationTime:UInt64, ProcessCommandLine:UnicodeString, ExtraDataJson:UnicodeString Rich detection/remediation report with file, process, verdict/action and extra-data fields. Keyword-gated.

Field groups in event 74:

Group Fields
File identity Sha1, Sha256, SigSeq, SigSha, AllSigSeqs, AllSigShas
Paths RealPath, VPath
Report EtwDataReportType, ReportType, EngineReportGuid, ResourceData, ResourceSchema
Verdict/action Determination, ActionStatus, ThreatName, Classification, IsLatent, IsPassiveMode
Process ProcessID, ProcessCreationTime, ProcessPath, ProcessCommandLine, RtpProcessID, RtpProcessCreationTime
Scan context ScanSource, ScanType
Extra ExtraDataJson

Determination, ActionStatus and Classification are numeric fields without manifest value maps. IsPassiveMode and IsLatent are boolean fields; their operational meaning is not defined by the schema.

SenseHeartbeat

Manifest task: SenseHeartbeatTask
Task GUID: {79D1BB9C-D9E2-4BE1-AED7-16091FE55F73}
Events: 1

Heartbeat-named event carrying a JSON string. Keyword-gated.

ID.Ver Event (symbol) Opcode Payload fields Summary
76.0 SenseHeartbeatEvent Info JsonData:UnicodeString Sense heartbeat payload containing JSON status data.

SmsScan

Manifest task: SmsScanTask
Task GUID: {794C9B64-2884-4ABD-8B9E-98F432BC0757}
Events: 6

SMS events are named for process-ID/path monitoring requests, monitoring start/stop, and scan start/stop. Ghidra found strings GetPEBAddress, SMSAsyncScan and SmsScan.MonitoringLevel in this DLL; the names support a memory-scanning interpretation but do not establish complete runtime semantics or coverage.

ID.Ver Event (symbol) Opcode Payload fields Summary
77.0 SmsRequestMonitorProcessIdEvent SmsRequestMonitorProcessId ProcessId:UInt32, CreationTime:FILETIME, Level:UInt8, EffectiveLevel:UInt8, TriggerSigSeq:UInt64, Origin:UInt8 Requests memory monitoring for a process, with level and trigger context.
78.0 SmsRequestMonitorFilePathEvent SmsRequestMonitorFilePath ImageFilePath:UnicodeString, Level:UInt8, EffectiveLevel:UInt8, TriggerSigSeq:UInt64, Origin:UInt8 Requests memory monitoring using an image path.
79.0 SmsMonitoringStartEvent SmsMonitoringStart ProcessId:UInt32, CreationTime:FILETIME, Level:UInt8, TriggerSigSeq:UInt64 Marks the start of process memory monitoring.
80.0 SmsMonitoringStopEvent SmsMonitoringStop ProcessId:UInt32, CreationTime:FILETIME, Level:UInt8, TriggerSigSeq:UInt64, StopReason:UInt8 Marks the end of monitoring, with a reason code.
81.0 SmsScanStartEvent SmsScanStart ProcessId:UInt32, CreationTime:FILETIME, ScanReason:UInt8 Marks the start of a process memory scan.
82.0 SmsScanStopEvent SmsScanStop ProcessId:UInt32, CreationTime:FILETIME, ScanReason:UInt8, ScanResult:UInt8 Marks scan completion and includes a result code.

Ghidra string evidence for this DLL includes GetPEBAddress, GetSMSMappedFilename, GetSMSMemRanges, GetSMSProcArchitecture, SMSVirtualQuery, SMSModuleLoadSync, and the text SMSAsyncScan should only be called from Cmd_HSTR sigs. Decompilation at the reference to that text shows a guard/error path containing the message; this is static evidence, not proof of all callers or runtime behavior.

Level, EffectiveLevel, Origin, StopReason, ScanReason and ScanResult have manifest value maps in Appendix B. The map labels do not define level depth, policy clamping, request causality or event completeness. TriggerSigSeq is a field name; validate its relationship to a signature before using it as a causal join.

StartRundown

Manifest task: StartRundownTask
Task GUID: {B45C5E82-33EE-4B2D-B570-2E236470AC11}
Events: 2

Start-rundown-named task. Related event names/opcodes include start-state variants 89, 91, 93, 97, 99 and 106; the manifest does not prove emission completeness or ordering.

ID.Ver Event (symbol) Opcode Payload fields Summary
83.0 StartRundownStartEvent Start EngineId:Pointer Marks the beginning of the start-of-trace state rundown.
84.0 StartRundownStopEvent Stop EngineId:Pointer Marks the end of the start-of-trace state rundown.

The manifest defines rundown-related opcodes and keyword bits. It does not establish that every in-flight object is emitted or that a trace begun after an incident reconstructs prior activity.

EndRundown

Manifest task: EndRundownTask
Task GUID: {94E92162-F37D-4995-ABC4-130BBD61B5A2}
Events: 2

End-rundown-named task. Related event names/opcodes include stop-state variants 90, 92, 94, 98, 100 and 107; the manifest does not prove emission completeness or ordering.

ID.Ver Event (symbol) Opcode Payload fields Summary
85.0 EndRundownStartEvent Start EngineId:Pointer Marks the beginning of the end-of-trace state rundown.
86.0 EndRundownStopEvent Stop EngineId:Pointer Marks the end of the end-of-trace state rundown.

The manifest labels some DC events with start/stop opcodes and rundown keywords; verify their actual contents and completeness in a runtime trace.

Engine

Manifest task: EngineTask
Task GUID: {42D05A96-9C50-4348-BBDF-48C9AB720A09}
Events: 4

Engine instance lifecycle: start/stop and rundown start/stop, with version triplet and engine pointer. Distinct from EngineLoad (DLL load).

ID.Ver Event (symbol) Opcode Payload fields Summary
87.0 EngineStartEvent Start EngineId:Pointer, Engine Version:UnicodeString, AV Version:UnicodeString, AS Version:UnicodeString Reports engine startup and version information.
88.0 EngineStopEvent Stop EngineId:Pointer, Engine Version:UnicodeString, AV Version:UnicodeString, AS Version:UnicodeString Reports engine shutdown and version information.
89.0 EngineDCStartEvent DC_Start EngineId:Pointer, Engine Version:UnicodeString, AV Version:UnicodeString, AS Version:UnicodeString Rundown snapshot of engine state and versions.
90.0 EngineDCStopEvent DC_Stop EngineId:Pointer, Engine Version:UnicodeString, AV Version:UnicodeString, AS Version:UnicodeString Rundown snapshot of engine state and versions.

UfsScanFile

Manifest task: UfsScanFileTask
Task GUID: {08A8495F-8D8F-476C-A083-E26E8EABB1B7}
Events: 7

File-scan-start/stop-named events with path, engine and time fields; the manifest does not establish coverage, scanner architecture or elapsed-time semantics.

ID.Ver Event (symbol) Opcode Payload fields Summary
30.2 UfsScanFileStartEvent_V2 Start EngineId:Pointer, FilePath:UnicodeString, ThreadTime:FILETIME Starts a file scan in the UFS scanner.
31.2 UfsScanFileStopEvent_V2 Stop EngineId:Pointer, FilePath:UnicodeString, ThreadTime:FILETIME Ends a file scan; no verdict is included.
31.3 UfsScanFileStopEvent_V3 Stop EngineId:Pointer, FilePath:UnicodeString, ThreadTime:FILETIME, StartQPC:UInt64 Ends a file scan and adds a start-time field.
91.0 UfsScanFileDCStartEvent_V0 DC_Start EngineId:Pointer, FilePath:UnicodeString Rundown snapshot of a file scan in progress.
91.1 UfsScanFileDCStartEvent_V1 DC_Start EngineId:Pointer, FilePath:UnicodeString, ThreadId:UInt32, StartQPC:UInt64 Rundown snapshot with additional thread and timing context.
92.0 UfsScanFileDCStopEvent_V0 DC_Stop EngineId:Pointer, FilePath:UnicodeString Rundown snapshot of file-scan state at trace end.
92.1 UfsScanFileDCStopEvent_V1 DC_Stop EngineId:Pointer, FilePath:UnicodeString, ThreadId:UInt32, StartQPC:UInt64 Rundown snapshot with additional thread and timing context.

UfsScanProc

Manifest task: UfsScanProcTask
Task GUID: {6F031E9A-9195-42FE-B149-4B02B31BF05D}
Events: 7

Process-scan-start/stop-named events. Similar listed fields to UfsScanFile, with a PID in the process variants; the manifest does not establish coverage or content scanned.

ID.Ver Event (symbol) Opcode Payload fields Summary
32.2 UfsScanProcStartEvent_V2 Start EngineId:Pointer, FilePath:UnicodeString, PID:UInt32, ThreadTime:FILETIME Starts a scan associated with a process.
33.2 UfsScanProcStopEvent_V2 Stop EngineId:Pointer, FilePath:UnicodeString, PID:UInt32, ThreadTime:FILETIME Ends a process-associated scan; no verdict is included.
33.3 UfsScanProcStopEvent_V3 Stop EngineId:Pointer, FilePath:UnicodeString, PID:UInt32, ThreadTime:FILETIME, StartQPC:UInt64 Ends a process-associated scan and adds a start-time field.
93.0 UfsScanProcDCStartEvent_V0 DC_Start EngineId:Pointer, FilePath:UnicodeString, PID:UInt32 Rundown snapshot of a process-associated scan in progress.
93.1 UfsScanProcDCStartEvent_V1 DC_Start EngineId:Pointer, FilePath:UnicodeString, PID:UInt32, ThreadId:UInt32, StartQPC:UInt64 Rundown snapshot with additional thread and timing context.
94.0 UfsScanProcDCStopEvent_V0 DC_Stop EngineId:Pointer, FilePath:UnicodeString, PID:UInt32 Rundown snapshot of process-scan state at trace end.
94.1 UfsScanProcDCStopEvent_V1 DC_Stop EngineId:Pointer, FilePath:UnicodeString, PID:UInt32, ThreadId:UInt32, StartQPC:UInt64 Rundown snapshot with additional thread and timing context.

SenseOnboardingInfo

Manifest task: SenseOnboardingInfoTask
Task GUID: {46617335-4f57-402d-b957-d1b55c95a775}
Events: 1

Sense/MDE onboarding information blob. Tells you whether the host is onboarded to Defender for Endpoint. Keyword-gated.

ID.Ver Event (symbol) Opcode Payload fields Summary
96.0 SenseOnboardingInfoEvent Info OnboardedInfo:UnicodeString Carries Sense onboarding information.

EngineLoad

Manifest task: EngineLoadTask
Task GUID: {7f2f8f1a-0c3e-4091-9743-ef3ec84bdeb0}
Events: 2

Engine DLL load start/finish, with engine pointer and version triplet. Distinct from EngineTask start/stop (engine initialization).

ID.Ver Event (symbol) Opcode Payload fields Summary
101.0 EngineLoadStartEvent Start EngineId:Pointer, Engine Version:UnicodeString, AV Version:UnicodeString, AS Version:UnicodeString Marks the start of an engine-load operation and reports versions.
102.0 EngineLoadEndEvent Stop EngineId:Pointer, Engine Version:UnicodeString, AV Version:UnicodeString, AS Version:UnicodeString Marks the end of an engine-load operation and reports versions.

SenseExclusion

Manifest task: SenseExclusionTask
Task GUID: {031d92b4-9137-42a5-9565-abf7fc62f93b}
Events: 1

Exclusion-named event with type, scope, resource, target, detection-name and user fields. Keyword-gated; its schema does not establish that it covers every exclusion source or resulting scan decision.

ID.Ver Event (symbol) Opcode Payload fields Summary
108.0 SenseExclusionEvent Info Type:AnsiString, Scope:AnsiString, ResourceType:AnsiString, TargetResource:UnicodeString, ParentResource:UnicodeString, DetectionName:AnsiString, UserName:UnicodeString Records exclusion-related details, including target and scope. Keyword-gated.

Appendix A - Scan Source

The manifest declares Scan Source as UInt32 and provides no value map. Ghidra confirms that this DLL contains strings including SCANSOURCE_NOTASOURCE, SCANSOURCE_SCHEDULED, SCANSOURCE_ONDEMAND, SCANSOURCE_RTP and SCANSOURCE_AMSI. The current static review did not establish a reliable string-to-number mapping or runtime semantics, so preserve the raw numeric value. Do not use the former numeric table or infer a scan trigger from it without independently validating the exact build.

Appendix B - SMS scan value maps

These are the manifest’s valueMap entries, i.e. labels a manifest-aware consumer can render for the SMS fields. The values and labels are manifest facts; the labels do not by themselves establish operational depth or policy behavior.

Level / EffectiveLevel (SmsScan.MonitoringLevel)

Value Manifest label
0 Unknown
1 None
2 Once
3 Low
4 Medium
5 High
6 Once Advanced
7 Low Advanced
8 Medium Advanced
9 High Advanced

The schema does not define a relationship between Level and EffectiveLevel beyond their shared manifest value map.

Origin (SmsScan.MonitoringRequestOrigin)

Value Manifest label
0 Engine
1 Signature

StopReason (SmsScan.MonitoringStopReason)

Value Manifest label
0 Unknown
1 Process Exit
2 Expiration
3 Error
4 Engine Unload
5 No Detection
6 LowFi Detected
7 Suspicious Detected
8 Threat Detected

ScanReason (SmsScan.ScanReason)

Value Manifest label
0 Unknown
1 Async On-Demand
2 Extended Memory Scan
3 File Access
4 Process Creation
5 Thread Injection
6 Thread Creation
7 Registry Write
8 Delayed Async On-Demand

ScanResult (SmsScan.ScanResult)

Value Manifest label
0 Unknown
1 No Detection
2 Scan Skipped
3 Scan Error
4 Scan Stopped due to Engine Unload
5 No Detection within scan constraints
6 LowFi
7 Suspicious
8 Threat

Appendix C - BM process taint

The manifest declares TaintReason as UInt64 and provides no value map. Ghidra found the literal BM_TAINT_REMOTE_THREAD in this DLL, but this review did not verify its numeric mapping, whether the field is an enum or bitmask, or persistence/reset behavior. Preserve the raw value and do not infer a technique from it without build-specific validation.

Appendix D - Event ID quirks

  • 30-33 are dual-purpose. 30.1/31.1/32.1/33.1 are GenericMessageTask v1 UFS events; 30.2/31.2/31.3, 32.2/33.2/33.3 are UfsScanFileTask/UfsScanProcTask. Same numeric ID, different task and payload. A consumer that keys only on ID will mis-decode them.
  • 34, 54, 56, 57 are not defined in this manifest. Opcode values in the 34-93 range are not event IDs; do not infer an event from an opcode.
  • 68 and 69 are GenericMessageTask events but are semantically ExpensiveSignature and UefiFirmwareVolume; they exist in both V0 and V1.
  • 83-86 are the only events using the StartRundown/EndRundown keywords for the markers themselves; the snapshots they bracket use the same keywords.
  • 101/102 (EngineLoad) vs 87/88 (Engine): event names differ, but the schema alone does not establish separate DLL-load and initialization phases.
  • 97/98 are ScanRequestTask DC events, not additional scan requests; they only appear during rundown.

event 7 as a hypothesis to investigate; either event can occur without the other, and neither alone proves policy impact or a rule gap.