2

私は、Windows イベント、ネットワーク イベント、特に NDIS-PacketCapture と TCPIP のイベント トレーシングをいじっています。各 ETW メッセージには PID フィールドがあり、割り当ての背後にあるロジックを理解しようとしています。TCPIP イベントの大部分は、PID フィールドに正しい PID を持ち、NDIS-Packet キャプチャの大部分も同様に持っているようです。ただし、PID が明らかに正しくない多くのインスタンス (おそらく 30%) があります。これらの誤った PID 情報の一部は、偽陽性であり、一部は偽陰性です。たとえば、Chrome からの特定のパケットを見逃して、そのケースに PID 0 を割り当てるだけです (偽陰性)。実行しているアプリケーションの PID を取得して、PID フィールドでこれらのイベントをキャッチすることがあります (誤検知)。私が分析できる限り、

注意すべきもう 1 つの興味深い点は、一部の TCPIP イベントには、ヘッダーの PID と一致する「PID」プロパティが含まれていることです。この「PID」プロパティは、ヘッダー PID よりも正確であるように見えますが、それでも偽陽性と偽陰性を示します。

バグがありますか? ETW メッセージの PID フィールドの目的を理解していませんか? これらのプロバイダーは、気が向いたときにゴミを入れることを選択しているだけですか?

StartTrace、EnableTraceEx2、OpenTrace、ProcessEventRecordProperties(PEVENT_RECORD pEvent) コールバックなど、C++ で Win32/64 トレース関数を使用しています。より具体的には、この例を変更して、NDIS-PacketCapture および TCPIP イベントを取得しました。http://msdn.microsoft.com/en-us/library/windows/desktop/ee441329(v=vs.85).aspx

これは、典型的な TCPIP イベントのすべての値がどのように見えるかです (私は xxx.. を IP とポート番号に使用しています)

------------------Processing Event Record ------------------
Event HEADER (size=136) flags=64bit, type=none
pid=7576 tid=5236 eid=1300
Time: sys=3 usr=2
Event PROVIDER {2f07e2ee-15db-40f1-90ef-9d7ba282188a}
Event ACTIVITY {0ff3b670-fa80-ffff-0000-000000000000}
Provider name: Microsoft-Windows-TCPIP

Provider GUID: {2F07E2EE-15DB-40F1-90EF-9D7BA282188A}
Event message: TCP: connection %1 (local=%3 remote=%5) exists. State = %6. PID = %7. 
Keyword mask: 0x8000080400000084
  Keyword name: ut:TcpipTcb
  Keyword name: ut:TcpipDiagnosis
  Keyword name: ut:ConnectPath
  Keyword name: ut:Endpoint
Event ID: 1300
Tcb: 0xff3b670
LocalAddressLength: 16
LocalAddress:
 xxx.xxx.xxx.xxx:xxxx
RemoteAddressLength: 16
RemoteAddress:
 xxx.xxx.xxx.xxx:xxxx
State: EstablishedState
Pid: 7152 

どんな助けでも大歓迎です。

4

0 に答える 0