⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 60.htm

📁 网络编程原理文摘 [文件] 精华区目录结构 [目录] 网络编程的基本原理 [目录] 网络编程与网络协议 [目录] 网上资源 [目录] winsock技术 [目录
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML><HEAD><TITLE>CTerm非常精华下载</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type></HEAD>
<BODY bgColor=#ffffff>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=100% background=0044.jpg>
  <BODY>
  <TR>
    <TD height=150 rowSpan=2 width="308" ><IMG alt=DDl_back.jpg height=129 width=300 src="DDl_back.jpg" ></TD>
    <TD background=DDl_back2.jpg height=50 width="581" ><BIG><BIG><FONT face=黑体>
      <P align=center >重拳出击  一网打尽</FONT></BIG></BIG></P></TD></TR>
  <TR>
    <TD bgColor=#0099ff borderColor=#0099ff height=5 width="581"></TD></TR>
  <TR>
    <TD align=middle colSpan=2 height=100 vAlign=top width="891" ><BR>
<p align=center>[<a href="清华bbs网络资源.htm">回到开始</a>][<a href="8.htm">上一层</a>][<a href="61.htm">下一篇</a>]
<hr><p align="left"><small>发信人: goodmind (激情与冷漠), 信区: NetPRG <br>

标  题: 截获winsock代码 <br>

发信站: BBS 水木清华站 (Mon Dec 18 21:40:06 2000) <br>

  <br>

  <br>

  <br>

WSOCK32.CPP <br>

  <br>

#include <windows.h> <br>

#include <stdio.h> <br>

void abc(char *p){FILE *fp=fopen("c:\\z.txt","a+");fprintf(fp,"%s\n", <br>

p);fclose(fp);} <br>

//日志文件 <br>

//必须输出与原WSOCK32.DLL库同样的函数。 <br>

  <br>

HMODULE i;char aa[1000];FARPROC a;DWORD d; <br>

  <br>

int (__stdcall *getsockopt1)(SOCKET ,int ,int ,char * , int * ); <br>

u_short (__stdcall *ntohs1)(u_short ); <br>

struct hostent *  (__stdcall *gethostbyname1)(const char FAR *  ); <br>

int (__stdcall *getsockname1)(SOCKET ,struct sockaddr *,int * ); <br>

int (__stdcall *bind1)(SOCKET ,const struct sockaddr *,int ); <br>

u_long (__stdcall *htonl1)(u_long); <br>



char * (__stdcall *inet_ntoa1)(struct in_addr); <br>

int (__stdcall *WsControl1)(int ,int ,int ,int ,int ,int ); <br>

unsigned long (__stdcall *inet_addr1)(const char FAR * ); <br>

int (__stdcall *__WSAFDIsSet1)(SOCKET,fd_set FAR *); <br>

int (__stdcall *WSAGetLastError1)(); <br>

int (__stdcall *recv1)(SOCKET ,char FAR * ,int ,int ); <br>

int (__stdcall *send1)(SOCKET ,const char * ,int ,int); <br>

int (__stdcall *connect1)(SOCKET,const struct sockaddr *,int); <br>

  <br>

int (__stdcall *closesockinfo1)(int ); <br>

int (__stdcall *NPLoadNameSpaces1)(int ,int ,int ); <br>

int (__stdcall *closesocket1)(SOCKET ); <br>

int (__stdcall *select1)(int ,fd_set FAR *,fd_set FAR *,fd_set FAR *, <br>

const struct timeval FAR * ); <br>

HANDLE  (__stdcall *WSAAsyncGetHostByName1)(HWND ,u_int ,const char <br>

FAR * , char FAR * ,int ); <br>

int (__stdcall *ioctlsocket1)(SOCKET ,long ,u_long FAR *); <br>

int (__stdcall *setsockopt1)(SOCKET ,int ,int ,const char * ,int ); <br>

int (__stdcall *WSAAsyncSelect1)(SOCKET,HWND ,u_int,long); <br>

SOCKET (__stdcall *socket1)(int ,int,int); <br>

u_short (__stdcall *htons1)(u_short); <br>

int     (__stdcall *WSAStartup1)(WORD,LPWSADATA); <br>



int     (__stdcall *WSACleanup1)(); <br>

  <br>

int PASCAL FAR WSAStartup(WORD wVersionRequired, LPWSADATA lpWSAData) <br>

{ <br>

abc("WSAStartup"); <br>

//记日志,当然也可以是您的模块 <br>

i=LoadLibrary("c:\\windows\\system\\wsock32.aaa"); <br>

//装载原动态库 <br>

a=GetProcAddress(i,"WSAStartup"); <br>

WSAStartup1=(int (_stdcall *)(WORD,LPWSADATA))a; <br>

return WSAStartup1(wVersionRequired,lpWSAData); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

} <br>

int PASCAL FAR WSACleanup(void) <br>

{ <br>

abc("WSACleanup"); <br>

//记日志 <br>

a=GetProcAddress(i,"WSACleanup"); <br>

//取得原同名函数地址 <br>

WSACleanup1=(int (_stdcall *)())a; <br>



return WSACleanup1(); <br>

//执行真正的处理 <br>

} <br>

u_short PASCAL FAR htons (u_short hostshort) <br>

{ <br>

abc("htons"); <br>

a=GetProcAddress(i,"htons"); <br>

htons1=(u_short (_stdcall *)(u_short))a; <br>

return htons1(hostshort); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

} <br>

SOCKET PASCAL FAR socket (int af, int type, int protocol) <br>

{ <br>

abc("socket"); <br>

a=GetProcAddress(i,"socket"); <br>

socket1=(SOCKET (_stdcall *)(int ,int,int))a; <br>

return socket1(af,type,protocol); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

  <br>

} <br>

int PASCAL FAR WSAAsyncSelect(SOCKET s, HWND hWnd, u_int wMsg,long <br>

lEvent) <br>

{ <br>

abc("WSAAsyncSelect"); <br>

a=GetProcAddress(i,"WSAAsyncSelect"); <br>

WSAAsyncSelect1=(int (_stdcall *)(SOCKET,HWND ,u_int,long ))a; <br>

return WSAAsyncSelect1(s,hWnd,wMsg,lEvent); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

} <br>

int PASCAL FAR setsockopt(SOCKET s,int level,int optname,const char * <br>

optval,int optlen) <br>

{ <br>

abc("setsockopt"); <br>

a=GetProcAddress(i,"setsockopt"); <br>

setsockopt1=(int (_stdcall *)(SOCKET ,int ,int ,const char * ,int ))a; <br>

return setsockopt1(s,level,optname,optval,optlen); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

  <br>

} <br>

int PASCAL FAR ioctlsocket(SOCKET s, long cmd, u_long FAR *argp) <br>

{ <br>

abc("ioctlsocket"); <br>

a=GetProcAddress(i,"ioctlsocket"); <br>

ioctlsocket1=(int (_stdcall *)(SOCKET ,long ,u_long FAR *))a; <br>

return ioctlsocket1(s,cmd,argp); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

} <br>

HANDLE PASCAL FAR WSAAsyncGetHostByName(HWND hWnd, u_int wMsg,const char <br>

 FAR * name, char FAR * buf,int buflen) <br>

{ <br>

abc("WSAAsyncGetHostByName"); <br>

a=GetProcAddress(i,"WSAAsyncGetHostByName"); <br>

WSAAsyncGetHostByName1=(HANDLE (_stdcall *)(HWND ,u_int ,const char <br>

FAR * , char FAR * ,int ))a; <br>

return WSAAsyncGetHostByName1(hWnd,wMsg,name,buf,buflen); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

  <br>

} <br>

int PASCAL FAR select(int nfds, fd_set FAR *readfds, fd_set FAR <br>

*writefds,fd_set FAR *exceptfds, const struct timeval FAR *timeout) <br>

{ <br>

abc("select"); <br>

a=GetProcAddress(i,"select"); <br>

select1=(int (_stdcall *)(int ,fd_set FAR *,fd_set FAR *,fd_set FAR *, <br>

const struct timeval FAR *))a; <br>

return select1(nfds,readfds,writefds,exceptfds,timeout); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

} <br>

int PASCAL FAR closesocket(SOCKET s) <br>

{ <br>

abc("closesocket"); <br>

a=GetProcAddress(i,"closesocket"); <br>

closesocket1=(int (_stdcall *)(SOCKET ))a; <br>

return closesocket1(s); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

  <br>

} <br>

int PASCAL FAR NPLoadNameSpaces(int p,int q,int r) <br>

{ <br>

abc("NPLoadNameSpaces"); <br>

a=GetProcAddress(i,"NPLoadNameSpaces"); <br>

NPLoadNameSpaces1=(int (_stdcall *)(int ,int ,int ))a; <br>

return NPLoadNameSpaces1(p,q,r); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

  <br>

} <br>

int PASCAL FAR closesockinfo(int p) <br>

{ <br>

abc("closesockinfo"); <br>

a=GetProcAddress(i,"closesockinfo"); <br>

closesockinfo1=(int (_stdcall *)(int))a; <br>

return closesockinfo1(p); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

} <br>

} <br>

int PASCAL FAR connect(SOCKET s,const struct sockaddr *name, int <br>

namelen) <br>

{ <br>

abc("connect"); <br>

a=GetProcAddress(i,"connect"); <br>

connect1=(int (_stdcall *)(SOCKET ,const struct sockaddr *,int ))a; <br>

return connect1(s,name,namelen); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

} <br>

int PASCAL FAR WSAGetLastError(void) <br>

{ <br>

a=GetProcAddress(i,"WSAGetLastError"); <br>

WSAGetLastError1=(int (_stdcall *)())a; <br>

d=WSAGetLastError1(); <br>

sprintf(aa,"WSAGetLastError %d",d); <br>

abc(aa); <br>

return d; <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

  <br>

} <br>

int PASCAL FAR send(SOCKET s,const char * buf,int len,int flags) <br>

{ <br>

abc("send"); <br>

a=GetProcAddress(i,"send"); <br>

send1=(int (_stdcall *)(SOCKET ,const char * ,int ,int ))a; <br>

return send1(s,buf,len,flags); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

} <br>

int PASCAL FAR recv(SOCKET s, char FAR * buf, int len, int flags) <br>

{ <br>

abc("recv"); <br>

a=GetProcAddress(i,"recv"); <br>

recv1=(int (_stdcall *)(SOCKET ,char FAR * ,int ,int ))a; <br>

return recv1(s, buf, len, flags); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

} <br>

int PASCAL FAR __WSAFDIsSet(SOCKET p,fd_set FAR *q) <br>



{ <br>

abc("__WSAFDIsSet"); <br>

a=GetProcAddress(i,"__WSAFDIsSet"); <br>

__WSAFDIsSet1=(int (_stdcall *)(SOCKET,fd_set FAR *))a; <br>

return __WSAFDIsSet1(p,q); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

} <br>

unsigned long PASCAL inet_addr(const char FAR * cp) <br>

{ <br>

abc("inet_addr"); <br>

a=GetProcAddress(i,"inet_addr"); <br>

inet_addr1=(unsigned long (_stdcall *)(const char FAR * ))a; <br>

return inet_addr1(cp); <br>

//取得原同名函数地址 <br>

//执行真正的处理 <br>

  <br>

} <br>

int PASCAL WsControl(int p,int q,int r,int s,int t,int u) <br>

{ <br>

abc("WsControl"); <br>



a=GetProcAddress(i,"WsControl"); <br>

WsControl1=(int (_stdcall *)(int ,int ,int ,int ,int ,int ))a; <br>

return WsControl1(p,q,r,s,t,u); <br>

//取得原同名函数地址 <br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -