#include #include #include #include "winsock2hooks.h" #include "ISXWoWPackets.h" DETOUR_TRAMPOLINE_EMPTY(int WSAAPI Trampoline_send(SOCKET s,const char FAR * buf,int len,int flags)); DETOUR_TRAMPOLINE_EMPTY(int WSAAPI Trampoline_recv(SOCKET s,char FAR * buf,int len,int flags)); DETOUR_TRAMPOLINE_EMPTY(int WSAAPI Trampoline_recvfrom(SOCKET s,char FAR * buf,int len,int flags,struct sockaddr FAR * from,int FAR * fromlen)); DETOUR_TRAMPOLINE_EMPTY(int WSAAPI Trampoline_WSARecv(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)); DETOUR_TRAMPOLINE_EMPTY(int WSAAPI Trampoline_WSASend(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)); FILE * fpLog; int WSAAPI my_send(SOCKET s,const char FAR * buf,int len,int flags) { fprintf(fpLog,"[send] %s\r\n\r\n",buf); int ret = Trampoline_send(s,buf,len,flags); return ret; } int WSAAPI my_recv(SOCKET s,char FAR * buf,int len,int flags) { fprintf(fpLog,"[recv] %s\r\n\r\n",buf); int ret = Trampoline_recv(s,buf,len,flags); return ret; } int WSAAPI my_recvfrom(SOCKET s,char FAR * buf,int len,int flags,struct sockaddr FAR * from,int FAR * fromlen) { fprintf(fpLog,"[recvfrom] %s\r\n\r\n",buf); int ret = Trampoline_recvfrom(s,buf,len,flags,from,fromlen); return ret; } int WSAAPI my_WSARecv(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine) { fprintf(fpLog,"[WSARecv] %s\r\n\r\n",lpBuffers->buf); int ret = Trampoline_WSARecv(s,lpBuffers,dwBufferCount,lpNumberOfBytesRecvd,lpFlags,lpOverlapped,lpCompletionRoutine); return ret; } int WSAAPI my_WSASend(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine) { fprintf(fpLog,"[WSASend] %s\r\n\r\n",lpBuffers->buf); int ret = Trampoline_WSASend(s,lpBuffers,dwBufferCount,lpNumberOfBytesSent,dwFlags,lpOverlapped,lpCompletionRoutine); return ret; }