ETWは、ユーザーモードプロセスで作成されたシステムコールをキャプチャするメカニズムを提供しているという人がいました。私は利用可能なプロバイダを列挙し、この情報を提供する可能性があるのは2つしかないと考えています。最初はMicrosoft-Windows-Kernel-Audit-API-Callsでした。このプロバイダーは私に次のデータを示していますWindowsユーザーモードのプロセスETWでのSyscallトレース
<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>
これは有望に見える、しかしでEventIdは、システムコール名に対応していますか? EventIdが実際に意味するものを詳述するドキュメンテーションはありますか?私はMSDNや他の場所に関連するものは見つけられませんでした。私は特に、NtCreateFile、NtCreateThreadEx、NtAllocateVirtualMemoryなどのAPIコールを探しています。
私が調べたもう1つのプロバイダは「Windowsカーネルトレース」でした。これは、実際には "Syscall"などのキーワードを使用してSysClEnter/SysClExitログを提供しますが、これらのログはそれらを起動したプロセスIDやAPIを提供しません。代わりに、入力されたシステムコールのカーネルアドレスのように見えるものを与えます。
ETWの内部の仕組みに精通している方は、ETW経由でこの情報をどのように収集するかについての回答を得ることができますか?