#include <winsock2.h>
#include <windows.h>
#pragma pack(1)
HINSTANCE hL = 0;
FARPROC p[117] = {0};
#pragma comment(lib,"wsock32.lib")
BOOL WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID)
{
if (reason == DLL_PROCESS_ATTACH)
{
hL = LoadLibrary("C:\\Windows\\System32\\ws2_32.dll");
if (!hL)
return false;
p[0] = GetProcAddress(hL,"FreeAddrInfoW");
p[1] = GetProcAddress(hL,"GetAddrInfoW");
p[2] = GetProcAddress(hL,"GetNameInfoW");
p[3] = GetProcAddress(hL,"WEP");
p[4] = GetProcAddress(hL,"WPUCompleteOverlappedRequest");
p[5] = GetProcAddress(hL,"WSAAccept");
p[6] = GetProcAddress(hL,"WSAAddressToStringA");
p[7] = GetProcAddress(hL,"WSAAddressToStringW");
p[8] = GetProcAddress(hL,"WSAAsyncGetHostByAddr");
p[9] = GetProcAddress(hL,"WSAAsyncGetHostByName");
p[10] = GetProcAddress(hL,"WSAAsyncGetProtoByName");
p[11] = GetProcAddress(hL,"WSAAsyncGetProtoByNumber");
p[12] = GetProcAddress(hL,"WSAAsyncGetServByName");
p[13] = GetProcAddress(hL,"WSAAsyncGetServByPort");
p[14] = GetProcAddress(hL,"WSAAsyncSelect");
p[15] = GetProcAddress(hL,"WSACancelAsyncRequest");
p[16] = GetProcAddress(hL,"WSACancelBlockingCall");
p[17] = GetProcAddress(hL,"WSACleanup");
p[18] = GetProcAddress(hL,"WSACloseEvent");
p[19] = GetProcAddress(hL,"WSAConnect");
p[20] = GetProcAddress(hL,"WSACreateEvent");
p[21] = GetProcAddress(hL,"WSADuplicateSocketA");
p[22] = GetProcAddress(hL,"WSADuplicateSocketW");
p[23] = GetProcAddress(hL,"WSAEnumNameSpaceProvidersA");
p[24] = GetProcAddress(hL,"WSAEnumNameSpaceProvidersW");
p[25] = GetProcAddress(hL,"WSAEnumNetworkEvents");
p[26] = GetProcAddress(hL,"WSAEnumProtocolsA");
p[27] = GetProcAddress(hL,"WSAEnumProtocolsW");
p[28] = GetProcAddress(hL,"WSAEventSelect");
p[29] = GetProcAddress(hL,"WSAGetLastError");
p[30] = GetProcAddress(hL,"WSAGetOverlappedResult");
p[31] = GetProcAddress(hL,"WSAGetQOSByName");
p[32] = GetProcAddress(hL,"WSAGetServiceClassInfoA");
p[33] = GetProcAddress(hL,"WSAGetServiceClassInfoW");
p[34] = GetProcAddress(hL,"WSAGetServiceClassNameByClassIdA");
p[35] = GetProcAddress(hL,"WSAGetServiceClassNameByClassIdW");
p[36] = GetProcAddress(hL,"WSAHtonl");
p[37] = GetProcAddress(hL,"WSAHtons");
p[38] = GetProcAddress(hL,"WSAInstallServiceClassA");
p[39] = GetProcAddress(hL,"WSAInstallServiceClassW");
p[40] = GetProcAddress(hL,"WSAIoctl");
p[41] = GetProcAddress(hL,"WSAIsBlocking");
p[42] = GetProcAddress(hL,"WSAJoinLeaf");
p[43] = GetProcAddress(hL,"WSALookupServiceBeginA");
p[44] = GetProcAddress(hL,"WSALookupServiceBeginW");
p[45] = GetProcAddress(hL,"WSALookupServiceEnd");
p[46] = GetProcAddress(hL,"WSALookupServiceNextA");
p[47] = GetProcAddress(hL,"WSALookupServiceNextW");
p[48] = GetProcAddress(hL,"WSANSPIoctl");
p[49] = GetProcAddress(hL,"WSANtohl");
p[50] = GetProcAddress(hL,"WSANtohs");
p[51] = GetProcAddress(hL,"WSAProviderConfigChange");
p[52] = GetProcAddress(hL,"WSARecv");
p[53] = GetProcAddress(hL,"WSARecvDisconnect");
p[54] = GetProcAddress(hL,"WSARecvFrom");
p[55] = GetProcAddress(hL,"WSARemoveServiceClass");
p[56] = GetProcAddress(hL,"WSAResetEvent");
p[57] = GetProcAddress(hL,"WSASend");
p[58] = GetProcAddress(hL,"WSASendDisconnect");
p[59] = GetProcAddress(hL,"WSASendTo");
p[60] = GetProcAddress(hL,"WSASetBlockingHook");
p[61] = GetProcAddress(hL,"WSASetEvent");
p[62] = GetProcAddress(hL,"WSASetLastError");
p[63] = GetProcAddress(hL,"WSASetServiceA");
p[64] = GetProcAddress(hL,"WSASetServiceW");
p[65] = GetProcAddress(hL,"WSASocketA");
p[66] = GetProcAddress(hL,"WSASocketW");
p[67] = GetProcAddress(hL,"WSAStartup");
p[68] = GetProcAddress(hL,"WSAStringToAddressA");
p[69] = GetProcAddress(hL,"WSAStringToAddressW");
p[70] = GetProcAddress(hL,"WSAUnhookBlockingHook");
p[71] = GetProcAddress(hL,"WSAWaitForMultipleEvents");
p[72] = GetProcAddress(hL,"WSApSetPostRoutine");
p[73] = GetProcAddress(hL,"WSCDeinstallProvider");
p[74] = GetProcAddress(hL,"WSCEnableNSProvider");
p[75] = GetProcAddress(hL,"WSCEnumProtocols");
p[76] = GetProcAddress(hL,"WSCGetProviderPath");
p[77] = GetProcAddress(hL,"WSCInstallNameSpace");
p[78] = GetProcAddress(hL,"WSCInstallProvider");
p[79] = GetProcAddress(hL,"WSCUnInstallNameSpace");
p[80] = GetProcAddress(hL,"WSCUpdateProvider");
p[81] = GetProcAddress(hL,"WSCWriteNameSpaceOrder");
p[82] = GetProcAddress(hL,"WSCWriteProviderOrder");
p[83] = GetProcAddress(hL,"__WSAFDIsSet");
p[84] = GetProcAddress(hL,"accept");
p[85] = GetProcAddress(hL,"bind");
p[86] = GetProcAddress(hL,"closesocket");
p[87] = GetProcAddress(hL,"connect");
p[88] = GetProcAddress(hL,"freeaddrinfo");
p[89] = GetProcAddress(hL,"getaddrinfo");
p[90] = GetProcAddress(hL,"gethostbyaddr");
p[91] = GetProcAddress(hL,"gethostbyname");
p[92] = GetProcAddress(hL,"gethostname");
p[93] = GetProcAddress(hL,"getnameinfo");
p[94] = GetProcAddress(hL,"getpeername");
p[95] = GetProcAddress(hL,"getprotobyname");
p[96] = GetProcAddress(hL,"getprotobynumber");
p[97] = GetProcAddress(hL,"getservbyname");
p[98] = GetProcAddress(hL,"getservbyport");
p[99] = GetProcAddress(hL,"getsockname");
p[100] = GetProcAddress(hL,"getsockopt");
p[101] = GetProcAddress(hL,"htonl");
p[102] = GetProcAddress(hL,"htons");
p[103] = GetProcAddress(hL,"inet_addr");
p[104] = GetProcAddress(hL,"inet_ntoa");
p[105] = GetProcAddress(hL,"ioctlsocket");
p[106] = GetProcAddress(hL,"listen");
p[107] = GetProcAddress(hL,"ntohl");
p[108] = GetProcAddress(hL,"ntohs");
p[109] = GetProcAddress(hL,"recv");
p[110] = GetProcAddress(hL,"recvfrom");
p[111] = GetProcAddress(hL,"select");
p[112] = GetProcAddress(hL,"send");
p[113] = GetProcAddress(hL,"sendto");
p[114] = GetProcAddress(hL,"setsockopt");
p[115] = GetProcAddress(hL,"shutdown");
p[116] = GetProcAddress(hL,"socket");
}
if (reason == DLL_PROCESS_DETACH)
{
FreeLibrary(hL);
}
return 1;
}
// FreeAddrInfoW
extern "C" __declspec(naked) void __stdcall __E__0__()
{
__asm
{
jmp p[0*4];
}
}
// GetAddrInfoW
extern "C" __declspec(naked) void __stdcall __E__1__()
{
__asm
{
jmp p[1*4];
}
}
// GetNameInfoW
extern "C" __declspec(naked) void __stdcall __E__2__()
{
__asm
{
jmp p[2*4];
}
}
// WEP
extern "C" __declspec(naked) void __stdcall __E__3__()
{
__asm
{
jmp p[3*4];
}
}
// WPUCompleteOverlappedRequest
extern "C" __declspec(naked) void __stdcall __E__4__()
{
__asm
{
jmp p[4*4];
}
}
// WSAAccept
extern "C" __declspec(naked) void __stdcall __E__5__()
{
__asm
{
jmp p[5*4];
}
}
// WSAAddressToStringA
extern "C" __declspec(naked) void __stdcall __E__6__()
{
__asm
{
jmp p[6*4];
}
}
// WSAAddressToStringW
extern "C" __declspec(naked) void __stdcall __E__7__()
{
__asm
{
jmp p[7*4];
}
}
// WSAAsyncGetHostByAddr
extern "C" __declspec(naked) void __stdcall __E__8__()
{
__asm
{
jmp p[8*4];
}
}
// WSAAsyncGetHostByName
extern "C" __declspec(naked) void __stdcall __E__9__()
{
__asm
{
jmp p[9*4];
}
}
// WSAAsyncGetProtoByName
extern "C" __declspec(naked) void __stdcall __E__10__()
{
__asm
{
jmp p[10*4];
}
}
// WSAAsyncGetProtoByNumber
extern "C" __declspec(naked) void __stdcall __E__11__()
{
__asm
{
jmp p[11*4];
}
}
// WSAAsyncGetServByName
extern "C" __declspec(naked) void __stdcall __E__12__()
{
__asm
{
jmp p[12*4];
}
}
// WSAAsyncGetServByPort
extern "C" __declspec(naked) void __stdcall __E__13__()
{
__asm
{
jmp p[13*4];
}
}
// WSAAsyncSelect
extern "C" __declspec(naked) void __stdcall __E__14__()
{
__asm
{
jmp p[14*4];
}
}
// WSACancelAsyncRequest
extern "C" __declspec(naked) void __stdcall __E__15__()
{
__asm
{