一些人告訴我,ETW提供了一種機制來捕獲用戶模式進程產生的系統調用。我列舉了可用的提供者,並且只提出了兩種可能提供此信息的可能性。第一個是Microsoft-Windows-Kernel-Audit-API-Calls。該供應商表示我下面的數據:Windows用戶模式使用ETW跟蹤進程系統調用
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
\t <System>
\t \t <Provider Name="Microsoft-Windows-Kernel-Audit-API-Calls" Guid="{e02a841c-75a3-4fa7-afc8-ae09cf9b7f23}" />
\t \t <EventID>5</EventID>
\t \t <Version>0</Version>
\t \t <Level>4</Level>
\t \t <Task>0</Task>
\t \t <Opcode>0</Opcode>
\t \t <Keywords>0x0</Keywords>
\t \t <TimeCreated SystemTime="2017-06-01T11:59:05.831179100-0500" />
\t \t <Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
\t \t <Execution ProcessID="1860" ThreadID="9628" ProcessorID="1" KernelTime="210" UserTime="1260" />
\t \t <Channel />
\t \t <Computer />
\t </System>
\t <EventData>
\t \t <Data Name="TargetProcessId">4294967295</Data>
\t \t <Data Name="DesiredAccess"> 1052672</Data>
\t \t <Data Name="ReturnCode">3221225483</Data>
\t </EventData>
\t <RenderingInfo Culture="en-US">
\t \t <Level>Information </Level>
\t \t <Opcode>Info </Opcode>
\t \t <Provider>Microsoft-Windows-Kernel-Audit-API-Calls </Provider>
\t </RenderingInfo>
</Event>
這看起來很有希望,但事件ID對應的系統調用的名字嗎?是否有任何文檔詳細說明EventId實際表示的內容?我無法在MSDN或其他地方找到任何相關信息。我正在尋找API調用,如NtCreateFile,NtCreateThreadEx,NtAllocateVirtualMemory等。
我看過的另一個提供者是「Windows Kernel Trace」。這實際上允許關鍵字例如「系統調用」,然後它將爲您提供SysClEnter/SysClExit日誌,但是這些日誌不提供啓動它們的進程ID,也不提供API。他們只是給出看起來是正在輸入的系統調用的內核地址。
是否有人對ETW的內部工作更加熟悉,能夠就如何通過ETW收集這些信息提供答案?