作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我目前正在开展一个项目,该项目需要在 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/
我是一名优秀的程序员,十分优秀!