私は現在、TCP データを監視するために IE で TCP send および recv API をフックする必要があるプロジェクトに取り組んでいます。IE9 と IE10 で問題なく動作します。しかし、IE11では動かなくなりました。いくつかの調査の後、IE11 は WSASend と WSARecv を使用してデータを送受信することがわかりました。そこで、WSASend と WSARecv をフックすることにしました。
WSARecv は重複した操作です。オーバーラップした操作の結果を取得するには、3 つの方法があります。オーバーラップ操作が使用される場合、関連するイベント、完了ルーチンがあるか、または I/O 完了ポートに関連付けられています。IE11 が WSARec を呼び出したときにオーバーラップした構造を確認したところ、イベントと完了ルーチンの両方が NULL であることがわかったので、IE11 は IO 完了ポートを使用してオーバーラップした操作の結果を取得していると思います。
問題は、GetQueuedCompletionStatus または GetQueuedCompletionStatusEx が IE11 によって呼び出されないことです。API モニターを使用するか、これら 2 つの関数を直接フックしますが、これら 2 つの関数が呼び出されることはありません。IE11 が別の API セットを使用して WSARec の結果を取得するかどうかはわかりません。誰かが同様の問題に遭遇したのだろうか。どの API をフックする必要がありますか? 同じ目標を達成する別の方法がある場合。基本的にやりたいことは、IE11でTCPデータを監視することです。