理解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