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