c# – 如何使用ETW Microsoft-Windows-TCPIP提供程序的TCB值来获取TCB信息

我试图使用ETW和Microsoft- Windows-TCPIP提供程序和Microsoft TraceEvent库捕获计算机上TCP连接的实时数据.

您可以从中获得的一个值是TCB,它是一个数字.

我知道什么是TCB(传输控制块),但我不知道数字意味着什么,我能从清单中找到的最好的是这是一个指针.

我真正想要做的是使用它来读取实际的TCB并获取它所连接的地址.我知道我可以从connect和rundown事件中获取一个地址,但由于各种原因,我可能并不总是拥有这些并且发送事件只包含TCB.

编辑:

我发现了许多允许您读取TCB表的API
https://msdn.microsoft.com/en-us/library/windows/desktop/aa366026(v=vs.85).aspx

然而,我真正想做的是使用从ETW返回的TCB编号,然后调用API并获取TCB信息

附加编辑:

我想在ETW事件中使用进程和线程ID来确定进程和线程正在进行通信的地址.

附加编辑:

当我可以获得具有收件人和端口的连接事件时,一切正常,我可以使用TCB编号将其连接到后续发送和断开连接.我需要针对特定​​情况的解决方案,其中我没有连接事件,只有发送.

您是说要将连接绑定到注释中的特定线程/进程.为此,您可以使用TCB作为参考来获取TCP连接的所有事件.在3次握手之后,您可以在Http堆栈的ConnConnect事件中找到源/目标IP /端口元组.然后,您可以找到侦听端口的进程.

您还可以尝试与Web服务器事件(例如IIS)关联以查找更多信息.

相关文章
相关标签/搜索