And*_*hko 12 windows winapi network-programming
例如,TCPView的最新版本具有以下功能:显示每个TCP连接发送/接收的字节数(启动TCPView时开始计数).是否可能没有数据包嗅探?Windows是否为此提供任何API?我还没有找到这样的性能计数器
编辑:TDI有助于接收每插槽传输统计信息吗?NetBIOS的?任何链接在哪里挖?
所有,我基本上完全颠倒了tcpview 3.0.2并根据我所学到的实现了相同的功能.
tcpview使用ETW来监控网络活动.
关键API是StartTrace,OpenTrace,ProcessTrace.
使用KERNEL_LOGGER_NAME并启用EVENT_TRACE_FLAG_NETWORK_TCPIP标记.
然后,您可以从EventCallback检索网络活动数据,然后将其解析为TcpIp_TypeGroup1和其他结构.根据该文件,这些结构仅从vista支持.但是你可以在xp(从反向猜测)和2003(我的环境是2003,xp上没有测试)中调用和使用它.当然,你必须自己定义所有这些结构.
从vista开始,win提供了一些用于检索每个连接统计信息的API.如GetPerTcpConnectionEStats,GetPerUdpConnectionEStats,您可以从MSDN获取更多详细信息.
此外,从vista,您可以使用RAW Socket完成相同的工作(我认为更精确).在vista之前,RAW Socket无法检索SEND数据包,这很可惜.
我也想实现这个功能,所以我逆向了tcpview 3.0.2。
我发现,tcpview使用了一个WMI性能计数器MSNT_TcpIpInformation。
但MSNT_TcpIpInformation在xp和2003中官方不支持。
这里有说明,你可以参考一下。 http://www.scriptinternals.com/new/us/support/Internal/WMI_MSNT_TcpIpInformation.htm
顺便说一句,MSNT_TcpIpInformation 没有有关数据包的信息,因此 tcpview 每次只是递增已发送和 revd 数据包。这是反汇编:
CPU Disasm
Address Hex dump Command Comments
0040B41B |. 83E8 02 SUB EAX,2 ; Switch (cases 2..3, 3 exits)
0040B41E |. 74 29 JE SHORT 0040B449
0040B420 |. 83E8 01 SUB EAX,1
0040B423 |. 75 40 JNE SHORT 0040B465
0040B425 |. 8B57 1C MOV EDX,DWORD PTR DS:[EDI+1C] ; Case 3 of switch Tcpview.40B41B
0040B428 |. 0196 90060000 ADD DWORD PTR DS:[ESI+690],EDX
0040B42E |. 119E 94060000 ADC DWORD PTR DS:[ESI+694],EBX
0040B434 |. 8386 C0060000 ADD DWORD PTR DS:[ESI+6C0],1
0040B43B |. 119E C4060000 ADC DWORD PTR DS:[ESI+6C4],EBX
0040B441 |. 5E POP ESI
0040B442 |. 5F POP EDI
0040B443 |. 5D POP EBP
0040B444 |. 5B POP EBX
0040B445 |. 83C4 3C ADD ESP,3C
0040B448 |. C3 RETN
0040B449 |> 8B47 1C MOV EAX,DWORD PTR DS:[EDI+1C] ; Case 2 of switch Tcpview.40B41B
0040B44C |. 0186 78060000 ADD DWORD PTR DS:[ESI+678],EAX
0040B452 |. 119E 7C060000 ADC DWORD PTR DS:[ESI+67C],EBX
0040B458 |. 8386 A8060000 ADD DWORD PTR DS:[ESI+6A8],1
0040B45F |. 119E AC060000 ADC DWORD PTR DS:[ESI+6AC],EBX
0040B465 |> 5E POP ESI ; Default case of switch Tcpview.40B41B
0040B466 |. 5F POP EDI
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7678 次 |
最近记录: |