我目前正在进行一个项目,该项目需要挂钩TCP发送和IE中的recv API来监控TCP数据。它在IE9和IE10上运行良好。但它在IE11上不再起作用。经过一些研究,我发现IE11使用WSASend和WSARecv来发送和接收数据。所以我决定把WSASend和WSARecv联系起来。
WSARecv是一个重叠的操作。有3种方法可以得到重叠操作的结果。当使用重叠操作时,它们要么具有关联的事件、完成例程,要么与I/O完成端口关联。我在IE11调用WSARec时检查了重叠结构,发现事件和完成例程都为空,所以我假设IE11使用IO完成端口来获取重叠操作的结果。
问题是IE11从未调用过GetQueuedCompletionStatus或GetQueuedCompletionStatusEx。我直接使用API monitor或挂钩这两个函数,但从未看到这两个函数被调用。我不知道IE11是否使用了不同的API来获得WSARec的结果。我想知道是否有人遇到过类似的问题。我应该挂接哪个API?如果有其他方法可以达到同样的目标。基本上,我想做的是在IE11中监视TCP数据。
发布于 2014-06-23 17:23:48
您可以在ntdll!NtDeviceIoControlFile,中设置断点,所有套接字API最终都将路由到该断点,这样您就可以知道使用了哪个断点。
发布于 2015-04-16 02:05:54
你需要钩住CreateThreadpoolIo。
发布于 2014-06-25 12:11:40
您还需要过滤WSARecvMsg、WSASendMsg等winsock扩展函数,为此您需要挂接WSAIoctl并替换扩展函数指针
https://stackoverflow.com/questions/24357660
复制相似问题