【发布时间】:2014-06-23 02:24:40
【问题描述】:
我目前正在做一个项目,该项目需要在 IE 中挂钩 TCP 发送和接收 API 以监控 TCP 数据。它在 IE9 和 IE10 上运行良好。但它停止在 IE11 上工作。经过一番研究,我发现 IE11 使用 WSASend 和 WSARecv 来发送和接收数据。所以我决定挂钩 WSASend 和 WSARecv。
WSARecv 是一个重叠操作。有 3 种方法可以获得重叠操作的结果。当使用重叠操作时,它们要么具有关联的事件、完成例程,要么与 I/O 完成端口关联。 我在IE11调用WSARec时检查了重叠结构,发现事件和完成例程都是NULL,所以我假设IE11使用IO完成端口来获取重叠操作的结果。
问题是 IE11 永远不会调用 GetQueuedCompletionStatus 或 GetQueuedCompletionStatusEx。我使用 API 监视器或直接挂钩这两个函数,从来没有看到这两个函数被调用。我不知道 IE11 是否使用不同的 API 集来获取 WSARec 的结果。 我想知道是否有人遇到过类似的问题。我应该挂钩哪个 API?如果有替代方法可以实现相同的目标。基本上我想做的是在 IE11 中监控 TCP 数据。
【问题讨论】:
-
听起来你在写间谍软件......
-
其实它不是间谍软件。我正在监视 TCP 数据以生成日志信息,例如 SSL 连接计数。我不能在 HTTP 级别上做,所以我必须在 TCP 级别上做......
标签: sockets tcp internet-explorer-11 hook apimonitor