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.

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:
- Microsoft Event Description
- Extracted ETW repnz/etw-providers-docs
Overview
- 5 event families carry most of the detection value:
74SenseRemediation,8BmDetection,63BmProcessTainting,53BmOpenProcess,95BmFileOverwrite. - 5 event families explain coverage gaps:
7SkippedFile,35-37MOAC,108SenseExclusion,38/39cache,91-94UFS rundown. - 3 event families show the sensor being evaded:
46-52/58registry blocks,73ProcessMonitorFlags,60BmEtw. - 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
- 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. - 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.
- 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.
- 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.
- 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.
- 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. - 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.
- 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
74SenseRemediation,8BmDetection,63BmProcessTainting,53BmOpenProcess and95BmFileOverwrite. Their names and fields do not establish detection fidelity or coverage. - Events
7,35-39,108and91-94may 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,73and60may 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
82is an exception: its manifest includesScanResult. 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). EngineIdis 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
- No verdict in many scan events. Events
1/2,5/6and30-33have no result field in their listed schemas. Event 82 is an exception. - 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.
- Task names are not unique discriminators. Event IDs 30-33 exist under both
GenericMessageTaskand the UFS tasks. Use the version and opcode as well. - 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.
- The listed schemas contain no raw file-byte field. They do include hashes, paths, offsets and CRC-named fields in some events.
- Time fields.
ThreadTimeis declared asFILETIME;StartQPCis 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. 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.- Event ID is the manifest
valueattribute, not the opcode.BmDetectionEventis event ID 8 with opcode 10; block-level consumers must decode both plus the version. - 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.
- 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.1areGenericMessageTaskv1 UFS events;30.2/31.2/31.3,32.2/33.2/33.3areUfsScanFileTask/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
GenericMessageTaskevents but are semanticallyExpensiveSignatureandUefiFirmwareVolume; 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
ScanRequestTaskDC 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.