理解Windows事件跟踪_ETW
Categories:
- 理解Windows事件跟踪_ETW
理解 ETW
筛除了一些不必要的信息, 完整文档参阅: https://docs.microsoft.com/en-us/windows/win32/etw/event-tracing-portal
理解基础
https://learn.microsoft.com/en-us/windows/win32/etw/about-event-tracing
Session
存在四种 session
session 种类 | 使用 | 限制 | 特点 |
---|---|---|---|
Event Tracing Session(Standard ETW) | 1. EVENT_TRACE_PROPERTIES2. StartTrace, 创建 session3. EnableTrace 1. EnableTrace for classic provider 2. EnableTraceEx for manifest-based provider4. ControlTrace 停止 session | - 一个 manifest-based provider 仅支持提供事件到至多 8 个 session- 一个 classic provider, 仅能服务一个 session.- session 抢占 provider 行为是后来居上. | 标准 ETW. |
SystemTraceProvider Session | 1. EVENT_TRACE_PROPERTIES->EnableFlags2. StartTrace3. ControlTrace 停止 session | - **SystemTraceProvider **是一个内核事件 provider, 提供一套预定义的内核事件.- NT Kernel Logger session是系统预置 session, 记录一系列系统预定义的内核事件- Win7/WinServer2008R2仅 NT Kernel Logger session 可使用 SystemTraceProvider - Win8/WinServer2012的 SystemTraceProvider 可以提供事件给8 个 logger session, 其中两个固定为 NT Kernel Logger 和 Circular Kernel Context Logger.- Win10 20348之后, 各 Systerm provider 可以被单独控制. | 获取系统内核预定义事件. |
AutoLogger session | 1. 修改注册表 2. EnableTraceEx3. ControlTrace 停止 session | - **Global Logger Session**是特殊独立的 session, 记录系统启动时事件.- 普通 AutoLogger 需要自行使能 provider, GlobleLogger 不需要.- AutoLogger 不支持 NT Kernel Logger 事件, 仅 GlobalLogger 支持.- 影响启动时间, 节制使用 | 记录操作系统启动期间事件 |
Private Logger Session | - | - User-mode ETW- 仅进程内使用- 不计入 64 session 并行限制. | 进程私有 |
工具
- logman
- wevtutil
- xpath 查询实例:
wevtutil qe Security /c:2 /q:"*[System[EventID=5157]]" /f:text
- xpath 查询实例:
- tracelog
- 使用 viusal studio 的
tracelog
工具, 可以在运行时动态的添加和删除 ETW Provider, 以及动态的添加和删除 ETW Session
- 使用 viusal studio 的
- mc
- etw-providers-docs