2017-06-02 8 views
0

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経由でこの情報をどのように収集するかについての回答を得ることができますか?

答えて

0

Windowsの任意のプロセスに関連するシステムコールを簡単に監視できます。 CMD管理者を使用して、このコマンドを実行します:あなたが使用した.etlファイルを解析する際

logman stop "NT Kernel Logger" -ets 

logman start "NT Kernel Logger" -p "Windows Kernel Trace" (syscall) -o sys.etl -ets 

をしてから

それを止めるtracerpt

tracerpt sys.etl 

あなたがダンプファイルにシステムコールのアドレスを見ることができます.xml。 windbgをを使用して、このコマンドを使用して、コマンドラインからの起動:

windbg.exe -kl -c x*!nt* 

あなたはシステムコール名にマッピングされたアドレスを見ることができます。

関連する問題