SocketHook

仕組み

通常、アプリケーションからの通信はWinsockを通じてインターネットにアクセスします。 SocketHookをインストールしたPCでは、Winsockが受け取った通信データをSocketHookがフックし その内容をSocketHooLib.dllに渡します。SocketHooLib.dllは受け取った通信データを処理した後、 SocketHookを介しWinsockを通じてインターネットにアクセスします。 つまり、通信データはすべてSockeHookLib.dllを通じてアクセスされることになるので、 SockeHookLib.dllにさまざまな処理を追加することにより通信の制御を行えます。

img_005.jpg


SocketHookLib.dllのソース内には予め、WinsockAPI関数のconnect、send、recvをフックする Hook_connect、Hook_send、Hook_recv関数のスケルトンが用意されています。 これらの関数に手を加えなかった場合は何も起こりませんが、処理コードを加えることにより通信を 自由に制御できます。

img_001.jpg


例えば、Hook_connect関数内に以下のコードをセットした場合、FTP通信の接続先リダイレクト、 リモートポート番号465の通信に関して切断メッセージを表示するといったことが可能となります。

img_002.jpg


Hook_send関数内に以下のコードをセットした場合、指定された宛先のメール送信をブロックします。

img_003.jpg


※ Winsockは、米国Microsoft Corporation.の米国およびその他の国における登録商標です。