HMODULE ws2_32 = NULL;
while(!ws2_32)
{
ws2_32 = GetModuleHandleA("ws2_32.dll");
Sleep(10);
}
osend = (r_send)GetProcAddress(ws2_32, "send");
orecv = (r_recv)GetProcAddress(ws2_32, "recv");
oconnect = (r_connect)GetProcAddress(ws2_32, "connect");
oWSASendTo = (r_WSASendTo)GetProcAddress(ws2_32, "WSASendTo");
oWSARecvFrom = (r_WSARecvFrom)GetProcAddress(ws2_32, "WSARecvFrom");
oWSASend = (r_WSASend)GetProcAddress(ws2_32, "WSASend");
oWSARecv = (r_WSARecv)GetProcAddress(ws2_32, "WSARecv");
ogethostbyname = (r_gethostbyname)GetProcAddress(ws2_32, "gethostbyname");
osendto = (r_sendto)GetProcAddress(ws2_32, "sendto");
orecvfrom = (r_recvfrom)GetProcAddress(ws2_32, "recvfrom");
osend = (r_send)DetourFunc((BYTE*)osend, (BYTE*)&custom_send, 5);
orecv = (r_recv)DetourFunc((BYTE*)orecv, (BYTE*)&custom_recv, 5);
oconnect = (r_connect)DetourFunc((BYTE*)oconnect, (BYTE*)&custom_connect, 5);
oWSASend = (r_WSASend)DetourFunc((BYTE*)oWSASend, (BYTE*)&custom_WSASend, 5);
oWSASendTo = (r_WSASendTo)DetourFunc((BYTE*)oWSASendTo, (BYTE*)&custom_WSASendTo, 5);
oWSARecvFrom = (r_WSARecvFrom)DetourFunc((BYTE*)oWSARecvFrom, (BYTE*)&custom_WSARecvFrom, 5);
oWSARecv = (r_WSARecv)DetourFunc((BYTE*)oWSARecv, (BYTE*)&custom_WSARecv, 5);
ogethostbyname = (r_gethostbyname)DetourFunc((BYTE*)ogethostbyname, (BYTE*)&custom_gethostbyname, 5);
osendto = (r_sendto)DetourFunc((BYTE*)osendto, (BYTE*)&custom_sendto, 5);
orecvfrom = (r_recvfrom)DetourFunc((BYTE*)orecvfrom, (BYTE*)&custom_recvfrom, 5);