sockets - 如何在IE11中正确hook WSARecv

标签 sockets tcp internet-explorer-11 hook apimonitor

我目前正在开展一个项目,该项目需要在 IE 中挂接 TCP 发送和接收 API 以监控 TCP 数据。它在 IE9 和 IE10 上运行良好。但它停止在 IE11 上工作。经过一番研究,我发现IE11使用WSASend和WSARecv来发送和接收数据。所以我决定 Hook WSASend 和 WSARecv。

WSARecv 是一个重叠操作。有 3 种方法可以获取重叠操作的结果。当使用重叠操作时,它们要么有关联的事件、完成例程,要么与 I/O 完成端口关联。 我检查了IE11调用WSARec时的重叠结构,发现事件和完成例程都是NULL,所以我假设IE11使用IO完成端口来获取重叠操作的结果。

问题是 GetQueuedCompletionStatus 或 GetQueuedCompletionStatusEx 从未被 IE11 调用。我使用 API 监视器或直接挂接这两个函数,但从未看到这两个函数被调用。我不知道 IE11 是否使用不同的 API 集来获取 WSARec 的结果。 不知道有没有人遇到过类似的问题。我应该挂接哪个 API?如果有其他方法可以实现相同的目标。基本上我想做的是在 IE11 中监视 TCP 数据。

最佳答案

可以在ntdll!NtDeviceIoControlFile中设置断点,所有socket API最终都路由到这个断点,这样就可以知道使用了哪个。

关于sockets - 如何在IE11中正确hook WSARecv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24357660/

相关文章:

c# - 服务器套接字在 Close_Wait 中挂起

python - 提高多线程 Web 服务器的性能

linux - 在 Linux 上模拟延迟和丢弃的数据包

sockets - 哪些协议(protocol)值与 socket() 中的哪些域和类型组合兼容?

php - 想要手动发送 SYN ACK 数据包来建立 TCP 连接(如果可能的话在 PHP 中)

internet-explorer - 在 Internet Explorer 中模拟打印媒体

css transform translateY 在 ie 11 中不起作用,但在 chrome 中起作用

jquery - 将 css 应用于下拉选项元素

JavaScript、node.js 在继续之前等待 socket.on 响应

使用套接字的java简单telnet客户端