截获WINSOCKET

来源:互联网 发布:琴精灵软件下载 编辑:程序博客网 时间:2024/04/29 08:42
 TCP/IP协议是目前各网络操作系统主要的通讯协议,也是 INTERNET的通讯协议,WIN95/NT平台提供了TCP/IP协议的实现函数库WINSOCKET(WSOCKET.DLL)动态库,因而可以利用WINSOCKET 编写基于TCP/IP协议的应用系统。(UNIX平台提供BSD-SOCKET)
       在实际应用开发中,我们总希望在调用正常的WINSOCKET接口函数时,先进行各自的特殊处理,如对于开发基于WIN95/NT平台的VPN客户端软件时,我们希望应用信息在发送前即在调用SEND函数时,先对信息进行加密后再发送。又如有的应用系统调用CONNECT 函数进行连接请求,我们需要截获此调用,插入我们自己的身份认证。模块,只有合法的身份,才可以调用正常的CONNECT函数,而非法的身份则不进行CONNECT调用。因而需要开发一种截获WINSOCKET函数调用的方法(INTERCEPT WINSOCKET),使在进行WINSOCK正常函数调用之前,使其先调用我们的身份认证模块,加解密模块。由于在WIN95/NT平台 WINSOCKET是以动态连接库(DLL)形式提供的,应而使各种应用系统在进行TCP/IP协议通讯时,无须任何修改,就先调用我们的应用模块,实现应用的透明性。
        一般要截获动态库(DLL)的调用,可以用HOOK(钩子技术),或外包DLL 技术,即将原来的DLL库改名(如将WINSOCK库WSOCK32.DLL改为A.DLL),新建一个DLL库,WSOCKET32.DLL,在新的DLL库中调用旧的DLL库。