
#include <stdio.h>
#define STRICT
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
//#include <winsock.h>



//---- APPLICATION PARAMETERS ------------------------------------------------//

#define SZAPPNAME     "LKS WinSock Hook DLL"
#define SZDESCRIPTION "Logs WinSock calls - just a test at the moment but could be very useful... :)"
#define SZVERSION     "Version 4.0"

#define SZRCOMPANYNAME "LKS Global Takeover Systems"
#define SZRDESCRIPTION "LKS WinSock Hook DLL"
#define SZRVERSION     "v0.01"
#define SZRAPPNAME     "WS_HOOK"
#define SZRCOPYRIGHT   "<c> LKS 1999"
#define SZRTRADEMARK   "-"
#define SZRPRODNAME    "-"
#define SZRPRODVER     "-"



//---- IMPORTED FUNCTIONS ----------------------------------------------------//

static int (WINAPI FAR *real_accept)();  // 1
static int (WINAPI FAR *real_bind)();  // 2
static int (WINAPI FAR *real_closesocket)();  // 3
static int (WINAPI FAR *real_connect)();  // 4
static int (WINAPI FAR *real_getpeername)();  // 5
static int (WINAPI FAR *real_getsockname)();  // 6
static int (WINAPI FAR *real_getsockopt)();  // 7
static int (WINAPI FAR *real_htonl)();  // 8
static int (WINAPI FAR *real_htons)();  // 9
static int (WINAPI FAR *real_inet_addr)();  // 10
static int (WINAPI FAR *real_inet_ntoa)();  // 11
static int (WINAPI FAR *real_ioctlsocket)();  // 12
static int (WINAPI FAR *real_listen)();  // 13
static int (WINAPI FAR *real_ntohl)();  // 14
static int (WINAPI FAR *real_ntohs)();  // 15
static int (WINAPI FAR *real_recv)();  // 16
static int (WINAPI FAR *real_recvfrom)();  // 17
static int (WINAPI FAR *real_select)();  // 18
static int (WINAPI FAR *real_send)();  // 19
static int (WINAPI FAR *real_sendto)();  // 20
static int (WINAPI FAR *real_setsockopt)();  // 21
static int (WINAPI FAR *real_shutdown)();  // 22
static int (WINAPI FAR *real_socket)();  // 23
static int (WINAPI FAR *real_MigrateWinsockConfiguration)();  // 24
static int (WINAPI FAR *real_gethostbyaddr)();  // 51
static int (WINAPI FAR *real_gethostbyname)();  // 52
static int (WINAPI FAR *real_getprotobyname)();  // 53
static int (WINAPI FAR *real_getprotobynumber)();  // 54
static int (WINAPI FAR *real_getservbyname)();  // 55
static int (WINAPI FAR *real_getservbyport)();  // 56
static int (WINAPI FAR *real_gethostname)();  // 57
static int (WINAPI FAR *real_WSAAsyncSelect)();  // 101
static int (WINAPI FAR *real_WSAAsyncGetHostByAddr)();  // 102
static int (WINAPI FAR *real_WSAAsyncGetHostByName)();  // 103
static int (WINAPI FAR *real_WSAAsyncGetProtoByNumber)();  // 104
static int (WINAPI FAR *real_WSAAsyncGetProtoByName)();  // 105
static int (WINAPI FAR *real_WSAAsyncGetServByPort)();  // 106
static int (WINAPI FAR *real_WSAAsyncGetServByName)();  // 107
static int (WINAPI FAR *real_WSACancelAsyncRequest)();  // 108
static int (WINAPI FAR *real_WSASetBlockingHook)();  // 109
static int (WINAPI FAR *real_WSAUnhookBlockingHook)();  // 110
static int (WINAPI FAR *real_WSAGetLastError)();  // 111
static int (WINAPI FAR *real_WSASetLastError)();  // 112
static int (WINAPI FAR *real_WSACancelBlockingCall)();  // 113
static int (WINAPI FAR *real_WSAIsBlocking)();  // 114
static int (WINAPI FAR *real_WSAStartup)();  // 115
static int (WINAPI FAR *real_WSACleanup)();  // 116
static int (WINAPI FAR *real___WSAFDIsSet)();  // 151
static int (WINAPI FAR *real_WEP)();  // 500
static int (WINAPI FAR *real_WSApSetPostRoutine)();  // 1000
static int (WINAPI FAR *real_WsControl)();  // 1001
static int (WINAPI FAR *real_closesockinfo)();  // 1002
static int (WINAPI FAR *real_Arecv)();  // 1003
static int (WINAPI FAR *real_Asend)();  // 1004
static int (WINAPI FAR *real_WSHEnumProtocols)();  // 1005
static int (WINAPI FAR *real_inet_network)();  // 1100
static int (WINAPI FAR *real_getnetbyname)();  // 1101
static int (WINAPI FAR *real_rcmd)();  // 1102
static int (WINAPI FAR *real_rexec)();  // 1103
static int (WINAPI FAR *real_rresvport)();  // 1104
static int (WINAPI FAR *real_sethostname)();  // 1105
static int (WINAPI FAR *real_dn_expand)();  // 1106
static int (WINAPI FAR *real_WSARecvEx)();  // 1107
static int (WINAPI FAR *real_s_perror)();  // 1108
static int (WINAPI FAR *real_GetAddressByNameA)();  // 1109
static int (WINAPI FAR *real_GetAddressByNameW)();  // 1110
static int (WINAPI FAR *real_EnumProtocolsA)();  // 1111
static int (WINAPI FAR *real_EnumProtocolsW)();  // 1112
static int (WINAPI FAR *real_GetTypeByNameA)();  // 1113
static int (WINAPI FAR *real_GetTypeByNameW)();  // 1114
static int (WINAPI FAR *real_GetNameByTypeA)();  // 1115
static int (WINAPI FAR *real_GetNameByTypeW)();  // 1116
static int (WINAPI FAR *real_SetServiceA)();  // 1117
static int (WINAPI FAR *real_SetServiceW)();  // 1118
static int (WINAPI FAR *real_GetServiceA)();  // 1119
static int (WINAPI FAR *real_GetServiceW)();  // 1120
static int (WINAPI FAR *real_NPLoadNameSpaces)();  // 1130
static int (WINAPI FAR *real_TransmitFile)();  // 1140
static int (WINAPI FAR *real_AcceptEx)();  // 1141
static int (WINAPI FAR *real_GetAcceptExSockaddrs)();  // 1142



//---- FUNCTION PROTOS -------------------------------------------------------//



//---- DEBUG FUNCTIONS -------------------------------------------------------//

/*

void abc(char * p) {
  FILE *fp=fopen("c:\z.txt","a+");
  fprintf(fp,"%s
",p);
  fclose(fp);
}

char aa[1000];

void abc(char * p) {
}

void abc_startup() {
}

void abc_shutdown() {
}

*/


CRITICAL_SECTION abc_critical;

void abc_startup() {
  InitializeCriticalSection(&abc_critical);
}

void abc_shutdown() {
  DeleteCriticalSection(&abc_critical);
}

void abc(char * p) {
  HDC dc;
  int i;
  EnterCriticalSection(&abc_critical);
  dc = GetDC(NULL);
  for(i=0; p[i]; i++);
  TextOut(dc, 0, 0, p, i);
  ReleaseDC(NULL, dc);
  LeaveCriticalSection(&abc_critical);
}



//---- IMPORT FUNCTION -------------------------------------------------------//

#define SHIM_GETPROCADDRESS(f) real_##f = GetProcAddress(ws_inst, "" #f)

char RealImport_msg[256];
int  RealImport_errors = 0;

FARPROC RealImport(HINSTANCE inst, char *name) {
  FARPROC f;

  f = GetProcAddress(inst, name);

  if(!f) {
    RealImport_errors ++;
    sprintf(RealImport_msg, "Error importing function '%s'", name);
    MessageBox(0, RealImport_msg, "LKS c:\\windows\\system\\wsock32.dll hook", IDOK);
  }

  return f;
}



//---- DLL ENTRY POINT -------------------------------------------------------//

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD reason, LPVOID lpvReserved) {

  if(reason == DLL_PROCESS_DETACH) {

    abc_shutdown();

  } else if(reason == DLL_PROCESS_ATTACH) {

    HINSTANCE ws_inst = LoadLibrary("c:\\windows\\system\\wsock32.dll");

    abc_startup();

    abc("DLL Started for a new process");

    if(!ws_inst) {
      abc("ERROR: Could not load DLL 'c:\\windows\\system\\wsock32.dll'");
      return FALSE;
    }

    abc("DLL 'c:\\windows\\system\\wsock32.dll' loaded ok");

    real_accept = RealImport(ws_inst, "accept");  // 1
    real_bind = RealImport(ws_inst, "bind");  // 2
    real_closesocket = RealImport(ws_inst, "closesocket");  // 3
    real_connect = RealImport(ws_inst, "connect");  // 4
    real_getpeername = RealImport(ws_inst, "getpeername");  // 5
    real_getsockname = RealImport(ws_inst, "getsockname");  // 6
    real_getsockopt = RealImport(ws_inst, "getsockopt");  // 7
    real_htonl = RealImport(ws_inst, "htonl");  // 8
    real_htons = RealImport(ws_inst, "htons");  // 9
    real_inet_addr = RealImport(ws_inst, "inet_addr");  // 10
    real_inet_ntoa = RealImport(ws_inst, "inet_ntoa");  // 11
    real_ioctlsocket = RealImport(ws_inst, "ioctlsocket");  // 12
    real_listen = RealImport(ws_inst, "listen");  // 13
    real_ntohl = RealImport(ws_inst, "ntohl");  // 14
    real_ntohs = RealImport(ws_inst, "ntohs");  // 15
    real_recv = RealImport(ws_inst, "recv");  // 16
    real_recvfrom = RealImport(ws_inst, "recvfrom");  // 17
    real_select = RealImport(ws_inst, "select");  // 18
    real_send = RealImport(ws_inst, "send");  // 19
    real_sendto = RealImport(ws_inst, "sendto");  // 20
    real_setsockopt = RealImport(ws_inst, "setsockopt");  // 21
    real_shutdown = RealImport(ws_inst, "shutdown");  // 22
    real_socket = RealImport(ws_inst, "socket");  // 23
    real_MigrateWinsockConfiguration = RealImport(ws_inst, "MigrateWinsockConfiguration");  // 24
    real_gethostbyaddr = RealImport(ws_inst, "gethostbyaddr");  // 51
    real_gethostbyname = RealImport(ws_inst, "gethostbyname");  // 52
    real_getprotobyname = RealImport(ws_inst, "getprotobyname");  // 53
    real_getprotobynumber = RealImport(ws_inst, "getprotobynumber");  // 54
    real_getservbyname = RealImport(ws_inst, "getservbyname");  // 55
    real_getservbyport = RealImport(ws_inst, "getservbyport");  // 56
    real_gethostname = RealImport(ws_inst, "gethostname");  // 57
    real_WSAAsyncSelect = RealImport(ws_inst, "WSAAsyncSelect");  // 101
    real_WSAAsyncGetHostByAddr = RealImport(ws_inst, "WSAAsyncGetHostByAddr");  // 102
    real_WSAAsyncGetHostByName = RealImport(ws_inst, "WSAAsyncGetHostByName");  // 103
    real_WSAAsyncGetProtoByNumber = RealImport(ws_inst, "WSAAsyncGetProtoByNumber");  // 104
    real_WSAAsyncGetProtoByName = RealImport(ws_inst, "WSAAsyncGetProtoByName");  // 105
    real_WSAAsyncGetServByPort = RealImport(ws_inst, "WSAAsyncGetServByPort");  // 106
    real_WSAAsyncGetServByName = RealImport(ws_inst, "WSAAsyncGetServByName");  // 107
    real_WSACancelAsyncRequest = RealImport(ws_inst, "WSACancelAsyncRequest");  // 108
    real_WSASetBlockingHook = RealImport(ws_inst, "WSASetBlockingHook");  // 109
    real_WSAUnhookBlockingHook = RealImport(ws_inst, "WSAUnhookBlockingHook");  // 110
    real_WSAGetLastError = RealImport(ws_inst, "WSAGetLastError");  // 111
    real_WSASetLastError = RealImport(ws_inst, "WSASetLastError");  // 112
    real_WSACancelBlockingCall = RealImport(ws_inst, "WSACancelBlockingCall");  // 113
    real_WSAIsBlocking = RealImport(ws_inst, "WSAIsBlocking");  // 114
    real_WSAStartup = RealImport(ws_inst, "WSAStartup");  // 115
    real_WSACleanup = RealImport(ws_inst, "WSACleanup");  // 116
    real___WSAFDIsSet = RealImport(ws_inst, "__WSAFDIsSet");  // 151
    real_WEP = RealImport(ws_inst, "WEP");  // 500
    real_WSApSetPostRoutine = RealImport(ws_inst, "WSApSetPostRoutine");  // 1000
    real_WsControl = RealImport(ws_inst, "WsControl");  // 1001
    real_closesockinfo = RealImport(ws_inst, "closesockinfo");  // 1002
    real_Arecv = RealImport(ws_inst, "Arecv");  // 1003
    real_Asend = RealImport(ws_inst, "Asend");  // 1004
    real_WSHEnumProtocols = RealImport(ws_inst, "WSHEnumProtocols");  // 1005
    real_inet_network = RealImport(ws_inst, "inet_network");  // 1100
    real_getnetbyname = RealImport(ws_inst, "getnetbyname");  // 1101
    real_rcmd = RealImport(ws_inst, "rcmd");  // 1102
    real_rexec = RealImport(ws_inst, "rexec");  // 1103
    real_rresvport = RealImport(ws_inst, "rresvport");  // 1104
    real_sethostname = RealImport(ws_inst, "sethostname");  // 1105
    real_dn_expand = RealImport(ws_inst, "dn_expand");  // 1106
    real_WSARecvEx = RealImport(ws_inst, "WSARecvEx");  // 1107
    real_s_perror = RealImport(ws_inst, "s_perror");  // 1108
    real_GetAddressByNameA = RealImport(ws_inst, "GetAddressByNameA");  // 1109
    real_GetAddressByNameW = RealImport(ws_inst, "GetAddressByNameW");  // 1110
    real_EnumProtocolsA = RealImport(ws_inst, "EnumProtocolsA");  // 1111
    real_EnumProtocolsW = RealImport(ws_inst, "EnumProtocolsW");  // 1112
    real_GetTypeByNameA = RealImport(ws_inst, "GetTypeByNameA");  // 1113
    real_GetTypeByNameW = RealImport(ws_inst, "GetTypeByNameW");  // 1114
    real_GetNameByTypeA = RealImport(ws_inst, "GetNameByTypeA");  // 1115
    real_GetNameByTypeW = RealImport(ws_inst, "GetNameByTypeW");  // 1116
    real_SetServiceA = RealImport(ws_inst, "SetServiceA");  // 1117
    real_SetServiceW = RealImport(ws_inst, "SetServiceW");  // 1118
    real_GetServiceA = RealImport(ws_inst, "GetServiceA");  // 1119
    real_GetServiceW = RealImport(ws_inst, "GetServiceW");  // 1120
    real_NPLoadNameSpaces = RealImport(ws_inst, "NPLoadNameSpaces");  // 1130
    real_TransmitFile = RealImport(ws_inst, "TransmitFile");  // 1140
    real_AcceptEx = RealImport(ws_inst, "AcceptEx");  // 1141
    real_GetAcceptExSockaddrs = RealImport(ws_inst, "GetAcceptExSockaddrs");  // 1142

  if(RealImport_errors == 0) {
      //  All functions imported sucessfully!
      abc("All functions imported sucessfully!");
    } else {
      abc("ERROR - Could not import function(s)!");
      return FALSE;
    }
  }
  return TRUE;
}



//---- MY REPLACEMENT FUNCTIONS ----------------------------------------------//

__declspec(naked) __declspec(dllexport) WINAPI FAR accept () {
  abc("accept");
  _asm jmp[real_accept];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR bind () {
  abc("bind");
  _asm jmp[real_bind];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR closesocket () {
  abc("closesocket");
  _asm jmp[real_closesocket];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR connect () {
  abc("connect");
  _asm jmp[real_connect];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR getpeername () {
  abc("getpeername");
  _asm jmp[real_getpeername];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR getsockname () {
  abc("getsockname");
  _asm jmp[real_getsockname];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR getsockopt () {
  abc("getsockopt");
  _asm jmp[real_getsockopt];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR htonl () {
  abc("htonl");
  _asm jmp[real_htonl];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR htons () {
  abc("htons");
  _asm jmp[real_htons];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR inet_addr () {
  abc("inet_addr");
  _asm jmp[real_inet_addr];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR inet_ntoa () {
  abc("inet_ntoa");
  _asm jmp[real_inet_ntoa];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR ioctlsocket () {
  abc("ioctlsocket");
  _asm jmp[real_ioctlsocket];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR listen () {
  abc("listen");
  _asm jmp[real_listen];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR ntohl () {
  abc("ntohl");
  _asm jmp[real_ntohl];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR ntohs () {
  abc("ntohs");
  _asm jmp[real_ntohs];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR recv () {
  abc("recv");
  _asm jmp[real_recv];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR recvfrom () {
  abc("recvfrom");
  _asm jmp[real_recvfrom];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR select () {
  abc("select");
  _asm jmp[real_select];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR send () {
  abc("send");
  _asm jmp[real_send];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR sendto () {
  abc("sendto");
  _asm jmp[real_sendto];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR setsockopt () {
  abc("setsockopt");
  _asm jmp[real_setsockopt];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR shutdown () {
  abc("shutdown");
  _asm jmp[real_shutdown];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR socket () {
  abc("socket");
  _asm jmp[real_socket];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR MigrateWinsockConfiguration () {
  abc("MigrateWinsockConfiguration");
  _asm jmp[real_MigrateWinsockConfiguration];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR gethostbyaddr () {
  abc("gethostbyaddr");
  _asm jmp[real_gethostbyaddr];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR gethostbyname () {
  abc("gethostbyname");
  _asm jmp[real_gethostbyname];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR getprotobyname () {
  abc("getprotobyname");
  _asm jmp[real_getprotobyname];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR getprotobynumber () {
  abc("getprotobynumber");
  _asm jmp[real_getprotobynumber];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR getservbyname () {
  abc("getservbyname");
  _asm jmp[real_getservbyname];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR getservbyport () {
  abc("getservbyport");
  _asm jmp[real_getservbyport];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR gethostname () {
  abc("gethostname");
  _asm jmp[real_gethostname];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSAAsyncSelect () {
  abc("WSAAsyncSelect");
  _asm jmp[real_WSAAsyncSelect];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSAAsyncGetHostByAddr () {
  abc("WSAAsyncGetHostByAddr");
  _asm jmp[real_WSAAsyncGetHostByAddr];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSAAsyncGetHostByName () {
  abc("WSAAsyncGetHostByName");
  _asm jmp[real_WSAAsyncGetHostByName];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSAAsyncGetProtoByNumber () {
  abc("WSAAsyncGetProtoByNumber");
  _asm jmp[real_WSAAsyncGetProtoByNumber];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSAAsyncGetProtoByName () {
  abc("WSAAsyncGetProtoByName");
  _asm jmp[real_WSAAsyncGetProtoByName];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSAAsyncGetServByPort () {
  abc("WSAAsyncGetServByPort");
  _asm jmp[real_WSAAsyncGetServByPort];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSAAsyncGetServByName () {
  abc("WSAAsyncGetServByName");
  _asm jmp[real_WSAAsyncGetServByName];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSACancelAsyncRequest () {
  abc("WSACancelAsyncRequest");
  _asm jmp[real_WSACancelAsyncRequest];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSASetBlockingHook () {
  abc("WSASetBlockingHook");
  _asm jmp[real_WSASetBlockingHook];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSAUnhookBlockingHook () {
  abc("WSAUnhookBlockingHook");
  _asm jmp[real_WSAUnhookBlockingHook];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSAGetLastError () {
  abc("WSAGetLastError");
  _asm jmp[real_WSAGetLastError];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSASetLastError () {
  abc("WSASetLastError");
  _asm jmp[real_WSASetLastError];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSACancelBlockingCall () {
  abc("WSACancelBlockingCall");
  _asm jmp[real_WSACancelBlockingCall];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSAIsBlocking () {
  abc("WSAIsBlocking");
  _asm jmp[real_WSAIsBlocking];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSAStartup () {
  abc("WSAStartup");
  _asm jmp[real_WSAStartup];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSACleanup () {
  abc("WSACleanup");
  _asm jmp[real_WSACleanup];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR __WSAFDIsSet () {
  abc("__WSAFDIsSet");
  _asm jmp[real___WSAFDIsSet];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WEP () {
  abc("WEP");
  _asm jmp[real_WEP];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSApSetPostRoutine () {
  abc("WSApSetPostRoutine");
  _asm jmp[real_WSApSetPostRoutine];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WsControl () {
  abc("WsControl");
  _asm jmp[real_WsControl];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR closesockinfo () {
  abc("closesockinfo");
  _asm jmp[real_closesockinfo];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR Arecv () {
  abc("Arecv");
  _asm jmp[real_Arecv];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR Asend () {
  abc("Asend");
  _asm jmp[real_Asend];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSHEnumProtocols () {
  abc("WSHEnumProtocols");
  _asm jmp[real_WSHEnumProtocols];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR inet_network () {
  abc("inet_network");
  _asm jmp[real_inet_network];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR getnetbyname () {
  abc("getnetbyname");
  _asm jmp[real_getnetbyname];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR rcmd () {
  abc("rcmd");
  _asm jmp[real_rcmd];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR rexec () {
  abc("rexec");
  _asm jmp[real_rexec];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR rresvport () {
  abc("rresvport");
  _asm jmp[real_rresvport];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR sethostname () {
  abc("sethostname");
  _asm jmp[real_sethostname];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR dn_expand () {
  abc("dn_expand");
  _asm jmp[real_dn_expand];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR WSARecvEx () {
  abc("WSARecvEx");
  _asm jmp[real_WSARecvEx];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR s_perror () {
  abc("s_perror");
  _asm jmp[real_s_perror];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR GetAddressByNameA () {
  abc("GetAddressByNameA");
  _asm jmp[real_GetAddressByNameA];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR GetAddressByNameW () {
  abc("GetAddressByNameW");
  _asm jmp[real_GetAddressByNameW];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR EnumProtocolsA () {
  abc("EnumProtocolsA");
  _asm jmp[real_EnumProtocolsA];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR EnumProtocolsW () {
  abc("EnumProtocolsW");
  _asm jmp[real_EnumProtocolsW];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR GetTypeByNameA () {
  abc("GetTypeByNameA");
  _asm jmp[real_GetTypeByNameA];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR GetTypeByNameW () {
  abc("GetTypeByNameW");
  _asm jmp[real_GetTypeByNameW];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR GetNameByTypeA () {
  abc("GetNameByTypeA");
  _asm jmp[real_GetNameByTypeA];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR GetNameByTypeW () {
  abc("GetNameByTypeW");
  _asm jmp[real_GetNameByTypeW];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR SetServiceA () {
  abc("SetServiceA");
  _asm jmp[real_SetServiceA];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR SetServiceW () {
  abc("SetServiceW");
  _asm jmp[real_SetServiceW];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR GetServiceA () {
  abc("GetServiceA");
  _asm jmp[real_GetServiceA];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR GetServiceW () {
  abc("GetServiceW");
  _asm jmp[real_GetServiceW];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR NPLoadNameSpaces () {
  abc("NPLoadNameSpaces");
  _asm jmp[real_NPLoadNameSpaces];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR TransmitFile () {
  abc("TransmitFile");
  _asm jmp[real_TransmitFile];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR AcceptEx () {
  abc("AcceptEx");
  _asm jmp[real_AcceptEx];
}

__declspec(naked) __declspec(dllexport) WINAPI FAR GetAcceptExSockaddrs () {
  abc("GetAcceptExSockaddrs");
  _asm jmp[real_GetAcceptExSockaddrs];
}



//---- END OF CODE -----------------------------------------------------------//

//---- Code generated by LKS Makehook.perl :)

