Windbg 确定谁在使用ws2_32!WSARecv或ws2_32!记录

Windbg 确定谁在使用ws2_32!WSARecv或ws2_32!记录,windbg,Windbg,如何确定哪些进程正在使用WS2_32从套接字接收数据 例如,我希望在某些进程调用ws2_32时只输出一个调用堆栈!WSARecv或ws2_32!录一下以便我知道电话从哪里来 我怀疑我可能需要将WinDbg与kb一起使用,但以前从未使用kb进行过真正的内核级调试。我已经通过串行连接对cdb和WinDbg PC到PC进行了大量的进程级调试 我一直在谷歌上搜索,但到目前为止,我还没有读到任何明确的方法。如果有人能给我指出正确的方向,我将不胜感激。我不怕花时间读书,我只是不想浪费更多的时间到兔子洞里去

如何确定哪些进程正在使用WS2_32从套接字接收数据

例如,我希望在某些进程调用ws2_32时只输出一个调用堆栈!WSARecv或ws2_32!录一下以便我知道电话从哪里来

我怀疑我可能需要将WinDbg与kb一起使用,但以前从未使用kb进行过真正的内核级调试。我已经通过串行连接对cdb和WinDbg PC到PC进行了大量的进程级调试

我一直在谷歌上搜索,但到目前为止,我还没有读到任何明确的方法。如果有人能给我指出正确的方向,我将不胜感激。我不怕花时间读书,我只是不想浪费更多的时间到兔子洞里去

提前感谢你的想法

[编辑]感谢Marc提供使用XPerf的提示和链接。这正是我所需要的。

使用xperf(或Win8.x上的WPA)的ETW更适合此任务。这篇文章正是你想要的

在那篇文章中,他们正在寻找
ws2_32!socket
这样就很容易按照他们的步骤查找
ws2_32的调用者了!WSASend
ws2_32!改为发送

这不是WinDbg解决方案,但对于来到这里希望在不进行内核调试的情况下执行类似操作的人可能会有所帮助

提供API日志记录功能。在API过滤器工具窗口中选择WS2_32.dll,然后检查方法
WSARecv
recv

这种方法的缺点:

  • 没有简单的方法可以通过单击来监视所有进程
  • 它不提供单个窗口中所有调用的概述,只提供每个进程的视图
  • 在64位Windows上,您需要并行运行64位和32位版本才能监视所有进程