理解Windows事件追蹤_ETW

  • 理解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
  • tracelog
    • 使用 viusal studio 的tracelog工具, 可以在執行時期動態的新增和刪除 ETW Provider, 以及動態的新增和刪除 ETW Session
  • mc
  • etw-providers-docs