Koaxia Game Hacking Board
Welcome, Guest. Please login or register.
Did you miss your activation email?
November 21, 2008, 11:53:11 AM

Login with username, password and session length
Search:     Advanced search
http://www.synrg-design.com
Partnered with Koaxia.

61344 Posts in 16742 Topics by 41250 Members
Latest Member: issueredschew
* Home Help Search Login Register
+  Koaxia Game Hacking Board
|-+  development
| |-+  Coding
| | |-+  Winsock Wrapper[C++]
0 Members and 1 Guest are viewing this topic. « previous next »
Pages: [1] Print
Author Topic: Winsock Wrapper[C++]  (Read 512 times)
g3nuin3
Newbie
*
Offline Offline

Posts: 10

Newbie


View Profile
Winsock Wrapper[C++]
« on: November 11, 2005, 11:32:35 PM »

This wrapper was not written by me, but i use it. Unfortunatly i couldnt find the one i wrote myself( to much shiet on my pc) so ill share this one with you..


These are placed in a .def file, for exporting.. they are 'most' if not all the winsock functions used by the winsock dll.
Code:
LIBRARY ws2_32
EXPORTS
  accept=h_accept @1
  bind=h_bind @2
  closesocket=h_closesocket @3
  connect=h_connect @4
  getpeername=h_getpeername @5
  getsockname=h_getsockname @6
  getsockopt=h_getsockopt @7
  htonl=h_htonl @8
  htons=h_htons @9
  ioctlsocket=h_ioctlsocket @10
  inet_addr=h_inet_addr @11
  inet_ntoa=h_inet_ntoa @12
  listen=h_listen @13
  ntohl=h_ntohl @14
  ntohs=h_ntohs @15
  recv=h_recv @16
  recvfrom=h_recvfrom @17
  select=h_select @18
  send=h_send @19
  sendto=h_sendto @20
  setsockopt=h_setsockopt @21
  shutdown=h_shutdown @22
  socket=h_socket @23
  GetAddrInfoW=h_GetAddrInfoW @24
  GetNameInfoW=h_GetNameInfoW @25
  WSApSetPostRoutine=h_WSApSetPostRoutine @26
  FreeAddrInfoW=h_FreeAddrInfoW @27
  WPUCompleteOverlappedRequest=h_WPUCompleteOverlappedRequest @28
  WSAAccept=h_WSAAccept @29
  WSAAddressToStringA=h_WSAAddressToStringA @30
  WSAAddressToStringW=h_WSAAddressToStringW @31
  WSACloseEvent=h_WSACloseEvent @32
  WSAConnect=h_WSAConnect @33
  WSACreateEvent=h_WSACreateEvent @34
  WSADuplicateSocketA=h_WSADuplicateSocketA @35
  WSADuplicateSocketW=h_WSADuplicateSocketW @36
  WSAEnumNameSpaceProvidersA=h_WSAEnumNameSpaceProvidersA @37
  WSAEnumNameSpaceProvidersW=h_WSAEnumNameSpaceProvidersW @38
  WSAEnumNetworkEvents=h_WSAEnumNetworkEvents @39
  WSAEnumProtocolsA=h_WSAEnumProtocolsA @40
  WSAEnumProtocolsW=h_WSAEnumProtocolsW @41
  WSAEventSelect=h_WSAEventSelect @42
  WSAGetOverlappedResult=h_WSAGetOverlappedResult @43
  WSAGetQOSByName=h_WSAGetQOSByName @44
  WSAGetServiceClassInfoA=h_WSAGetServiceClassInfoA @45
  WSAGetServiceClassInfoW=h_WSAGetServiceClassInfoW @46
  WSAGetServiceClassNameByClassIdA=h_WSAGetServiceClassNameByClassIdA @47
  WSAGetServiceClassNameByClassIdW=h_WSAGetServiceClassNameByClassIdW @48
  WSAHtonl=h_WSAHtonl @49
  WSAHtons=h_WSAHtons @50
  gethostbyaddr=h_gethostbyaddr @51
  gethostbyname=h_gethostbyname @52
  getprotobyname=h_getprotobyname @53
  getprotobynumber=h_getprotobynumber @54
  getservbyname=h_getservbyname @55
  getservbyport=h_getservbyport @56
  gethostname=h_gethostname @57
  WSAInstallServiceClassA=h_WSAInstallServiceClassA @58
  WSAInstallServiceClassW=h_WSAInstallServiceClassW @59
  WSAIoctl=h_WSAIoctl @60
  WSAJoinLeaf=h_WSAJoinLeaf @61
  WSALookupServiceBeginA=h_WSALookupServiceBeginA @62
  WSALookupServiceBeginW=h_WSALookupServiceBeginW @63
  WSALookupServiceEnd=h_WSALookupServiceEnd @64
  WSALookupServiceNextA=h_WSALookupServiceNextA @65
  WSALookupServiceNextW=h_WSALookupServiceNextW @66
  WSANSPIoctl=h_WSANSPIoctl @67
  WSANtohl=h_WSANtohl @68
  WSANtohs=h_WSANtohs @69
  WSAProviderConfigChange=h_WSAProviderConfigChange @70
  WSARecv=h_WSARecv @71
  WSARecvDisconnect=h_WSARecvDisconnect @72
  WSARecvFrom=h_WSARecvFrom @73
  WSARemoveServiceClass=h_WSARemoveServiceClass @74
  WSAResetEvent=h_WSAResetEvent @75
  WSASend=h_WSASend @76
  WSASendDisconnect=h_WSASendDisconnect @77
  WSASendTo=h_WSASendTo @78
  WSASetEvent=h_WSASetEvent @79
  WSASetServiceA=h_WSASetServiceA @80
  WSASetServiceW=h_WSASetServiceW @81
  WSASocketA=h_WSASocketA @82
  WSASocketW=h_WSASocketW @83
  WSAStringToAddressA=h_WSAStringToAddressA @84
  WSAStringToAddressW=h_WSAStringToAddressW @85
  WSAWaitForMultipleEvents=h_WSAWaitForMultipleEvents @86
  WSCDeinstallProvider=h_WSCDeinstallProvider @87
  WSCEnableNSProvider=h_WSCEnableNSProvider @88
  WSCEnumProtocols=h_WSCEnumProtocols @89
  WSCGetProviderPath=h_WSCGetProviderPath @90
  WSCInstallNameSpace=h_WSCInstallNameSpace @91
  WSCInstallProvider=h_WSCInstallProvider @92
  WSCUnInstallNameSpace=h_WSCUnInstallNameSpace @93
  WSCUpdateProvider=h_WSCUpdateProvider @94
  WSCWriteNameSpaceOrder=h_WSCWriteNameSpaceOrder @95
  WSCWriteProviderOrder=h_WSCWriteProviderOrder @96
  freeaddrinfo=h_freeaddrinfo @97
  getaddrinfo=h_getaddrinfo @98
  getnameinfo=h_getnameinfo @99
  WSAAsyncSelect=h_WSAAsyncSelect @101
  WSAAsyncGetHostByAddr=h_WSAAsyncGetHostByAddr @102
  WSAAsyncGetHostByName=h_WSAAsyncGetHostByName @103
  WSAAsyncGetProtoByNumber=h_WSAAsyncGetProtoByNumber @104
  WSAAsyncGetProtoByName=h_WSAAsyncGetProtoByName @105
  WSAAsyncGetServByPort=h_WSAAsyncGetServByPort @106
  WSAAsyncGetServByName=h_WSAAsyncGetServByName @107
  WSACancelAsyncRequest=h_WSACancelAsyncRequest @108
  WSASetBlockingHook=h_WSASetBlockingHook @109
  WSAUnhookBlockingHook=h_WSAUnhookBlockingHook @110
  WSAGetLastError=h_WSAGetLastError @111
  WSASetLastError=h_WSASetLastError @112
  WSACancelBlockingCall=h_WSACancelBlockingCall @113
  WSAIsBlocking=h_WSAIsBlocking @114
  WSAStartup=h_WSAStartup @115
  WSACleanup=h_WSACleanup @116
  __WSAFDIsSet=h___WSAFDIsSet @151
  WEP=h_WEP @500


This is the wrapper structure
Code:
#ifndef H_ws2_32_H
#define H_ws2_32_H 1

typedef int(*APIWRAPPER)(void);

#ifdef __cplusplus
extern "C" {
#endif

extern APIWRAPPER p_accept;
extern APIWRAPPER p_bind;
extern APIWRAPPER p_closesocket;
extern APIWRAPPER p_connect;
extern APIWRAPPER p_getpeername;
extern APIWRAPPER p_getsockname;
extern APIWRAPPER p_getsockopt;
extern APIWRAPPER p_htonl;
extern APIWRAPPER p_htons;
extern APIWRAPPER p_ioctlsocket;
extern APIWRAPPER p_inet_addr;
extern APIWRAPPER p_inet_ntoa;
extern APIWRAPPER p_listen;
extern APIWRAPPER p_ntohl;
extern APIWRAPPER p_ntohs;
extern APIWRAPPER p_recv;
extern APIWRAPPER p_recvfrom;
extern APIWRAPPER p_select;
extern APIWRAPPER p_send;
extern APIWRAPPER p_sendto;
extern APIWRAPPER p_setsockopt;
extern APIWRAPPER p_shutdown;
extern APIWRAPPER p_socket;
extern APIWRAPPER p_GetAddrInfoW;
extern APIWRAPPER p_GetNameInfoW;
extern APIWRAPPER p_WSApSetPostRoutine;
extern APIWRAPPER p_FreeAddrInfoW;
extern APIWRAPPER p_WPUCompleteOverlappedRequest;
extern APIWRAPPER p_WSAAccept;
extern APIWRAPPER p_WSAAddressToStringA;
extern APIWRAPPER p_WSAAddressToStringW;
extern APIWRAPPER p_WSACloseEvent;
extern APIWRAPPER p_WSAConnect;
extern APIWRAPPER p_WSACreateEvent;
extern APIWRAPPER p_WSADuplicateSocketA;
extern APIWRAPPER p_WSADuplicateSocketW;
extern APIWRAPPER p_WSAEnumNameSpaceProvidersA;
extern APIWRAPPER p_WSAEnumNameSpaceProvidersW;
extern APIWRAPPER p_WSAEnumNetworkEvents;
extern APIWRAPPER p_WSAEnumProtocolsA;
extern APIWRAPPER p_WSAEnumProtocolsW;
extern APIWRAPPER p_WSAEventSelect;
extern APIWRAPPER p_WSAGetOverlappedResult;
extern APIWRAPPER p_WSAGetQOSByName;
extern APIWRAPPER p_WSAGetServiceClassInfoA;
extern APIWRAPPER p_WSAGetServiceClassInfoW;
extern APIWRAPPER p_WSAGetServiceClassNameByClassIdA;
extern APIWRAPPER p_WSAGetServiceClassNameByClassIdW;
extern APIWRAPPER p_WSAHtonl;
extern APIWRAPPER p_WSAHtons;
extern APIWRAPPER p_gethostbyaddr;
extern APIWRAPPER p_gethostbyname;
extern APIWRAPPER p_getprotobyname;
extern APIWRAPPER p_getprotobynumber;
extern APIWRAPPER p_getservbyname;
extern APIWRAPPER p_getservbyport;
extern APIWRAPPER p_gethostname;
extern APIWRAPPER p_WSAInstallServiceClassA;
extern APIWRAPPER p_WSAInstallServiceClassW;
extern APIWRAPPER p_WSAIoctl;
extern APIWRAPPER p_WSAJoinLeaf;
extern APIWRAPPER p_WSALookupServiceBeginA;
extern APIWRAPPER p_WSALookupServiceBeginW;
extern APIWRAPPER p_WSALookupServiceEnd;
extern APIWRAPPER p_WSALookupServiceNextA;
extern APIWRAPPER p_WSALookupServiceNextW;
extern APIWRAPPER p_WSANSPIoctl;
extern APIWRAPPER p_WSANtohl;
extern APIWRAPPER p_WSANtohs;
extern APIWRAPPER p_WSAProviderConfigChange;
extern APIWRAPPER p_WSARecv;
extern APIWRAPPER p_WSARecvDisconnect;
extern APIWRAPPER p_WSARecvFrom;
extern APIWRAPPER p_WSARemoveServiceClass;
extern APIWRAPPER p_WSAResetEvent;
extern APIWRAPPER p_WSASend;
extern APIWRAPPER p_WSASendDisconnect;
extern APIWRAPPER p_WSASendTo;
extern APIWRAPPER p_WSASetEvent;
extern APIWRAPPER p_WSASetServiceA;
extern APIWRAPPER p_WSASetServiceW;
extern APIWRAPPER p_WSASocketA;
extern APIWRAPPER p_WSASocketW;
extern APIWRAPPER p_WSAStringToAddressA;
extern APIWRAPPER p_WSAStringToAddressW;
extern APIWRAPPER p_WSAWaitForMultipleEvents;
extern APIWRAPPER p_WSCDeinstallProvider;
extern APIWRAPPER p_WSCEnableNSProvider;
extern APIWRAPPER p_WSCEnumProtocols;
extern APIWRAPPER p_WSCGetProviderPath;
extern APIWRAPPER p_WSCInstallNameSpace;
extern APIWRAPPER p_WSCInstallProvider;
extern APIWRAPPER p_WSCUnInstallNameSpace;
extern APIWRAPPER p_WSCUpdateProvider;
extern APIWRAPPER p_WSCWriteNameSpaceOrder;
extern APIWRAPPER p_WSCWriteProviderOrder;
extern APIWRAPPER p_freeaddrinfo;
extern APIWRAPPER p_getaddrinfo;
extern APIWRAPPER p_getnameinfo;
extern APIWRAPPER p_WSAAsyncSelect;
extern APIWRAPPER p_WSAAsyncGetHostByAddr;
extern APIWRAPPER p_WSAAsyncGetHostByName;
extern APIWRAPPER p_WSAAsyncGetProtoByNumber;
extern APIWRAPPER p_WSAAsyncGetProtoByName;
extern APIWRAPPER p_WSAAsyncGetServByPort;
extern APIWRAPPER p_WSAAsyncGetServByName;
extern APIWRAPPER p_WSACancelAsyncRequest;
extern APIWRAPPER p_WSASetBlockingHook;
extern APIWRAPPER p_WSAUnhookBlockingHook;
extern APIWRAPPER p_WSAGetLastError;
extern APIWRAPPER p_WSASetLastError;
extern APIWRAPPER p_WSACancelBlockingCall;
extern APIWRAPPER p_WSAIsBlocking;
extern APIWRAPPER p_WSAStartup;
extern APIWRAPPER p_WSACleanup;
extern APIWRAPPER p___WSAFDIsSet;
extern APIWRAPPER p_WEP;

#ifdef __cplusplus
}
#endif

#endif



This goes in a C file

Code:
//ws2_32_decl.cpp


#include "ws2_32.h"

extern "C" {
APIWRAPPER p_accept;
APIWRAPPER p_bind;
APIWRAPPER p_closesocket;
APIWRAPPER p_connect;
APIWRAPPER p_getpeername;
APIWRAPPER p_getsockname;
APIWRAPPER p_getsockopt;
APIWRAPPER p_htonl;
APIWRAPPER p_htons;
APIWRAPPER p_ioctlsocket;
APIWRAPPER p_inet_addr;
APIWRAPPER p_inet_ntoa;
APIWRAPPER p_listen;
APIWRAPPER p_ntohl;
APIWRAPPER p_ntohs;
APIWRAPPER p_recv;
APIWRAPPER p_recvfrom;
APIWRAPPER p_select;
APIWRAPPER p_send;
APIWRAPPER p_sendto;
APIWRAPPER p_setsockopt;
APIWRAPPER p_shutdown;
APIWRAPPER p_socket;
APIWRAPPER p_GetAddrInfoW;
APIWRAPPER p_GetNameInfoW;
APIWRAPPER p_WSApSetPostRoutine;
APIWRAPPER p_FreeAddrInfoW;
APIWRAPPER p_WPUCompleteOverlappedRequest;
APIWRAPPER p_WSAAccept;
APIWRAPPER p_WSAAddressToStringA;
APIWRAPPER p_WSAAddressToStringW;
APIWRAPPER p_WSACloseEvent;
APIWRAPPER p_WSAConnect;
APIWRAPPER p_WSACreateEvent;
APIWRAPPER p_WSADuplicateSocketA;
APIWRAPPER p_WSADuplicateSocketW;
APIWRAPPER p_WSAEnumNameSpaceProvidersA;
APIWRAPPER p_WSAEnumNameSpaceProvidersW;
APIWRAPPER p_WSAEnumNetworkEvents;
APIWRAPPER p_WSAEnumProtocolsA;
APIWRAPPER p_WSAEnumProtocolsW;
APIWRAPPER p_WSAEventSelect;
APIWRAPPER p_WSAGetOverlappedResult;
APIWRAPPER p_WSAGetQOSByName;
APIWRAPPER p_WSAGetServiceClassInfoA;
APIWRAPPER p_WSAGetServiceClassInfoW;
APIWRAPPER p_WSAGetServiceClassNameByClassIdA;
APIWRAPPER p_WSAGetServiceClassNameByClassIdW;
APIWRAPPER p_WSAHtonl;
APIWRAPPER p_WSAHtons;
APIWRAPPER p_gethostbyaddr;
APIWRAPPER p_gethostbyname;
APIWRAPPER p_getprotobyname;
APIWRAPPER p_getprotobynumber;
APIWRAPPER p_getservbyname;
APIWRAPPER p_getservbyport;
APIWRAPPER p_gethostname;
APIWRAPPER p_WSAInstallServiceClassA;
APIWRAPPER p_WSAInstallServiceClassW;
APIWRAPPER p_WSAIoctl;
APIWRAPPER p_WSAJoinLeaf;
APIWRAPPER p_WSALookupServiceBeginA;
APIWRAPPER p_WSALookupServiceBeginW;
APIWRAPPER p_WSALookupServiceEnd;
APIWRAPPER p_WSALookupServiceNextA;
APIWRAPPER p_WSALookupServiceNextW;
APIWRAPPER p_WSANSPIoctl;
APIWRAPPER p_WSANtohl;
APIWRAPPER p_WSANtohs;
APIWRAPPER p_WSAProviderConfigChange;
APIWRAPPER p_WSARecv;
APIWRAPPER p_WSARecvDisconnect;
APIWRAPPER p_WSARecvFrom;
APIWRAPPER p_WSARemoveServiceClass;
APIWRAPPER p_WSAResetEvent;
APIWRAPPER p_WSASend;
APIWRAPPER p_WSASendDisconnect;
APIWRAPPER p_WSASendTo;
APIWRAPPER p_WSASetEvent;
APIWRAPPER p_WSASetServiceA;
APIWRAPPER p_WSASetServiceW;
APIWRAPPER p_WSASocketA;
APIWRAPPER p_WSASocketW;
APIWRAPPER p_WSAStringToAddressA;
APIWRAPPER p_WSAStringToAddressW;
APIWRAPPER p_WSAWaitForMultipleEvents;
APIWRAPPER p_WSCDeinstallProvider;
APIWRAPPER p_WSCEnableNSProvider;
APIWRAPPER p_WSCEnumProtocols;
APIWRAPPER p_WSCGetProviderPath;
APIWRAPPER p_WSCInstallNameSpace;
APIWRAPPER p_WSCInstallProvider;
APIWRAPPER p_WSCUnInstallNameSpace;
APIWRAPPER p_WSCUpdateProvider;
APIWRAPPER p_WSCWriteNameSpaceOrder;
APIWRAPPER p_WSCWriteProviderOrder;
APIWRAPPER p_freeaddrinfo;
APIWRAPPER p_getaddrinfo;
APIWRAPPER p_getnameinfo;
APIWRAPPER p_WSAAsyncSelect;
APIWRAPPER p_WSAAsyncGetHostByAddr;
APIWRAPPER p_WSAAsyncGetHostByName;
APIWRAPPER p_WSAAsyncGetProtoByNumber;
APIWRAPPER p_WSAAsyncGetProtoByName;
APIWRAPPER p_WSAAsyncGetServByPort;
APIWRAPPER p_WSAAsyncGetServByName;
APIWRAPPER p_WSACancelAsyncRequest;
APIWRAPPER p_WSASetBlockingHook;
APIWRAPPER p_WSAUnhookBlockingHook;
APIWRAPPER p_WSAGetLastError;
APIWRAPPER p_WSASetLastError;
APIWRAPPER p_WSACancelBlockingCall;
APIWRAPPER p_WSAIsBlocking;
APIWRAPPER p_WSAStartup;
APIWRAPPER p_WSACleanup;
APIWRAPPER p___WSAFDIsSet;
APIWRAPPER p_WEP;
}



Logged
g3nuin3
Newbie
*
Offline Offline

Posts: 10

Newbie


View Profile
Re: Winsock Wrapper[C++]
« Reply #1 on: November 11, 2005, 11:33:41 PM »

..contnued


This is where the hooking take place.. Wht happens is when one of these Functions are called it makes a JMP to our PRototype of the function, this also goes in a cpp file

Code:
ws2_32_hook.cpp
CODE

#include "ws2_32.h"

void __declspec(naked) h_accept() { _asm{ jmp p_accept } }
void __declspec(naked) h_bind() { _asm{ jmp p_bind } }
void __declspec(naked) h_closesocket() { _asm{ jmp p_closesocket } }
void __declspec(naked) h_connect() { _asm{ jmp p_connect } }
void __declspec(naked) h_getpeername() { _asm{ jmp p_getpeername } }
void __declspec(naked) h_getsockname() { _asm{ jmp p_getsockname } }
void __declspec(naked) h_getsockopt() { _asm{ jmp p_getsockopt } }
void __declspec(naked) h_htonl() { _asm{ jmp p_htonl } }
void __declspec(naked) h_htons() { _asm{ jmp p_htons } }
void __declspec(naked) h_ioctlsocket() { _asm{ jmp p_ioctlsocket } }
void __declspec(naked) h_inet_addr() { _asm{ jmp p_inet_addr } }
void __declspec(naked) h_inet_ntoa() { _asm{ jmp p_inet_ntoa } }
void __declspec(naked) h_listen() { _asm{ jmp p_listen } }
void __declspec(naked) h_ntohl() { _asm{ jmp p_ntohl } }
void __declspec(naked) h_ntohs() { _asm{ jmp p_ntohs } }
void __declspec(naked) h_recv() { _asm{ jmp p_recv } }
void __declspec(naked) h_recvfrom() { _asm{ jmp p_recvfrom } }
void __declspec(naked) h_select() { _asm{ jmp p_select } }
void __declspec(naked) h_send() { _asm{ jmp p_send } }
void __declspec(naked) h_sendto() { _asm{ jmp p_sendto } }
void __declspec(naked) h_setsockopt() { _asm{ jmp p_setsockopt } }
void __declspec(naked) h_shutdown() { _asm{ jmp p_shutdown } }
void __declspec(naked) h_socket() { _asm{ jmp p_socket } }
void __declspec(naked) h_GetAddrInfoW() { _asm{ jmp p_GetAddrInfoW } }
void __declspec(naked) h_GetNameInfoW() { _asm{ jmp p_GetNameInfoW } }
void __declspec(naked) h_WSApSetPostRoutine() { _asm{ jmp p_WSApSetPostRoutine } }
void __declspec(naked) h_FreeAddrInfoW() { _asm{ jmp p_FreeAddrInfoW } }
void __declspec(naked) h_WPUCompleteOverlappedRequest() { _asm{ jmp p_WPUCompleteOverlappedRequest } }
void __declspec(naked) h_WSAAccept() { _asm{ jmp p_WSAAccept } }
void __declspec(naked) h_WSAAddressToStringA() { _asm{ jmp p_WSAAddressToStringA } }
void __declspec(naked) h_WSAAddressToStringW() { _asm{ jmp p_WSAAddressToStringW } }
void __declspec(naked) h_WSACloseEvent() { _asm{ jmp p_WSACloseEvent } }
void __declspec(naked) h_WSAConnect() { _asm{ jmp p_WSAConnect } }
void __declspec(naked) h_WSACreateEvent() { _asm{ jmp p_WSACreateEvent } }
void __declspec(naked) h_WSADuplicateSocketA() { _asm{ jmp p_WSADuplicateSocketA } }
void __declspec(naked) h_WSADuplicateSocketW() { _asm{ jmp p_WSADuplicateSocketW } }
void __declspec(naked) h_WSAEnumNameSpaceProvidersA() { _asm{ jmp p_WSAEnumNameSpaceProvidersA } }
void __declspec(naked) h_WSAEnumNameSpaceProvidersW() { _asm{ jmp p_WSAEnumNameSpaceProvidersW } }
void __declspec(naked) h_WSAEnumNetworkEvents() { _asm{ jmp p_WSAEnumNetworkEvents } }
void __declspec(naked) h_WSAEnumProtocolsA() { _asm{ jmp p_WSAEnumProtocolsA } }
void __declspec(naked) h_WSAEnumProtocolsW() { _asm{ jmp p_WSAEnumProtocolsW } }
void __declspec(naked) h_WSAEventSelect() { _asm{ jmp p_WSAEventSelect } }
void __declspec(naked) h_WSAGetOverlappedResult() { _asm{ jmp p_WSAGetOverlappedResult } }
void __declspec(naked) h_WSAGetQOSByName() { _asm{ jmp p_WSAGetQOSByName } }
void __declspec(naked) h_WSAGetServiceClassInfoA() { _asm{ jmp p_WSAGetServiceClassInfoA } }
void __declspec(naked) h_WSAGetServiceClassInfoW() { _asm{ jmp p_WSAGetServiceClassInfoW } }
void __declspec(naked) h_WSAGetServiceClassNameByClassIdA() { _asm{ jmp p_WSAGetServiceClassNameByClassIdA } }
void __declspec(naked) h_WSAGetServiceClassNameByClassIdW() { _asm{ jmp p_WSAGetServiceClassNameByClassIdW } }
void __declspec(naked) h_WSAHtonl() { _asm{ jmp p_WSAHtonl } }
void __declspec(naked) h_WSAHtons() { _asm{ jmp p_WSAHtons } }
void __declspec(naked) h_gethostbyaddr() { _asm{ jmp p_gethostbyaddr } }
void __declspec(naked) h_gethostbyname() { _asm{ jmp p_gethostbyname } }
void __declspec(naked) h_getprotobyname() { _asm{ jmp p_getprotobyname } }
void __declspec(naked) h_getprotobynumber() { _asm{ jmp p_getprotobynumber } }
void __declspec(naked) h_getservbyname() { _asm{ jmp p_getservbyname } }
void __declspec(naked) h_getservbyport() { _asm{ jmp p_getservbyport } }
void __declspec(naked) h_gethostname() { _asm{ jmp p_gethostname } }
void __declspec(naked) h_WSAInstallServiceClassA() { _asm{ jmp p_WSAInstallServiceClassA } }
void __declspec(naked) h_WSAInstallServiceClassW() { _asm{ jmp p_WSAInstallServiceClassW } }
void __declspec(naked) h_WSAIoctl() { _asm{ jmp p_WSAIoctl } }
void __declspec(naked) h_WSAJoinLeaf() { _asm{ jmp p_WSAJoinLeaf } }
void __declspec(naked) h_WSALookupServiceBeginA() { _asm{ jmp p_WSALookupServiceBeginA } }
void __declspec(naked) h_WSALookupServiceBeginW() { _asm{ jmp p_WSALookupServiceBeginW } }
void __declspec(naked) h_WSALookupServiceEnd() { _asm{ jmp p_WSALookupServiceEnd } }
void __declspec(naked) h_WSALookupServiceNextA() { _asm{ jmp p_WSALookupServiceNextA } }
void __declspec(naked) h_WSALookupServiceNextW() { _asm{ jmp p_WSALookupServiceNextW } }
void __declspec(naked) h_WSANSPIoctl() { _asm{ jmp p_WSANSPIoctl } }
void __declspec(naked) h_WSANtohl() { _asm{ jmp p_WSANtohl } }
void __declspec(naked) h_WSANtohs() { _asm{ jmp p_WSANtohs } }
void __declspec(naked) h_WSAProviderConfigChange() { _asm{ jmp p_WSAProviderConfigChange } }
void __declspec(naked) h_WSARecv() { _asm{ jmp p_WSARecv } }
void __declspec(naked) h_WSARecvDisconnect() { _asm{ jmp p_WSARecvDisconnect } }
void __declspec(naked) h_WSARecvFrom() { _asm{ jmp p_WSARecvFrom } }
void __declspec(naked) h_WSARemoveServiceClass() { _asm{ jmp p_WSARemoveServiceClass } }
void __declspec(naked) h_WSAResetEvent() { _asm{ jmp p_WSAResetEvent } }
void __declspec(naked) h_WSASend() { _asm{ jmp p_WSASend } }
void __declspec(naked) h_WSASendDisconnect() { _asm{ jmp p_WSASendDisconnect } }
void __declspec(naked) h_WSASendTo() { _asm{ jmp p_WSASendTo } }
void __declspec(naked) h_WSASetEvent() { _asm{ jmp p_WSASetEvent } }
void __declspec(naked) h_WSASetServiceA() { _asm{ jmp p_WSASetServiceA } }
void __declspec(naked) h_WSASetServiceW() { _asm{ jmp p_WSASetServiceW } }
void __declspec(naked) h_WSASocketA() { _asm{ jmp p_WSASocketA } }
void __declspec(naked) h_WSASocketW() { _asm{ jmp p_WSASocketW } }
void __declspec(naked) h_WSAStringToAddressA() { _asm{ jmp p_WSAStringToAddressA } }
void __declspec(naked) h_WSAStringToAddressW() { _asm{ jmp p_WSAStringToAddressW } }
void __declspec(naked) h_WSAWaitForMultipleEvents() { _asm{ jmp p_WSAWaitForMultipleEvents } }
void __declspec(naked) h_WSCDeinstallProvider() { _asm{ jmp p_WSCDeinstallProvider } }
void __declspec(naked) h_WSCEnableNSProvider() { _asm{ jmp p_WSCEnableNSProvider } }
void __declspec(naked) h_WSCEnumProtocols() { _asm{ jmp p_WSCEnumProtocols } }
void __declspec(naked) h_WSCGetProviderPath() { _asm{ jmp p_WSCGetProviderPath } }
void __declspec(naked) h_WSCInstallNameSpace() { _asm{ jmp p_WSCInstallNameSpace } }
void __declspec(naked) h_WSCInstallProvider() { _asm{ jmp p_WSCInstallProvider } }
void __declspec(naked) h_WSCUnInstallNameSpace() { _asm{ jmp p_WSCUnInstallNameSpace } }
void __declspec(naked) h_WSCUpdateProvider() { _asm{ jmp p_WSCUpdateProvider } }
void __declspec(naked) h_WSCWriteNameSpaceOrder() { _asm{ jmp p_WSCWriteNameSpaceOrder } }
void __declspec(naked) h_WSCWriteProviderOrder() { _asm{ jmp p_WSCWriteProviderOrder } }
void __declspec(naked) h_freeaddrinfo() { _asm{ jmp p_freeaddrinfo } }
void __declspec(naked) h_getaddrinfo() { _asm{ jmp p_getaddrinfo } }
void __declspec(naked) h_getnameinfo() { _asm{ jmp p_getnameinfo } }
void __declspec(naked) h_WSAAsyncSelect() { _asm{ jmp p_WSAAsyncSelect } }
void __declspec(naked) h_WSAAsyncGetHostByAddr() { _asm{ jmp p_WSAAsyncGetHostByAddr } }
void __declspec(naked) h_WSAAsyncGetHostByName() { _asm{ jmp p_WSAAsyncGetHostByName } }
void __declspec(naked) h_WSAAsyncGetProtoByNumber() { _asm{ jmp p_WSAAsyncGetProtoByNumber } }
void __declspec(naked) h_WSAAsyncGetProtoByName() { _asm{ jmp p_WSAAsyncGetProtoByName } }
void __declspec(naked) h_WSAAsyncGetServByPort() { _asm{ jmp p_WSAAsyncGetServByPort } }
void __declspec(naked) h_WSAAsyncGetServByName() { _asm{ jmp p_WSAAsyncGetServByName } }
void __declspec(naked) h_WSACancelAsyncRequest() { _asm{ jmp p_WSACancelAsyncRequest } }
void __declspec(naked) h_WSASetBlockingHook() { _asm{ jmp p_WSASetBlockingHook } }
void __declspec(naked) h_WSAUnhookBlockingHook() { _asm{ jmp p_WSAUnhookBlockingHook } }
void __declspec(naked) h_WSAGetLastError() { _asm{ jmp p_WSAGetLastError } }
void __declspec(naked) h_WSASetLastError() { _asm{ jmp p_WSASetLastError } }
void __declspec(naked) h_WSACancelBlockingCall() { _asm{ jmp p_WSACancelBlockingCall } }
void __declspec(naked) h_WSAIsBlocking() { _asm{ jmp p_WSAIsBlocking } }
void __declspec(naked) h_WSAStartup() { _asm{ jmp p_WSAStartup } }
void __declspec(naked) h_WSACleanup() { _asm{ jmp p_WSACleanup } }
void __declspec(naked) h___WSAFDIsSet() { _asm{ jmp p___WSAFDIsSet } }
void __declspec(naked) h_WEP() { _asm{ jmp p_WEP } }



Logged
g3nuin3
Newbie
*
Offline Offline

Posts: 10

Newbie


View Profile
Re: Winsock Wrapper[C++]
« Reply #2 on: November 11, 2005, 11:34:14 PM »

When this dll is loaded is gets he addresses of the functions..
Code:
ws2_32_main.cpp
CODE

#include <windows.h>
#include "ws2_32.h"

HINSTANCE h_original;

BOOL APIENTRY DllMain(HINSTANCE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved) {
char path[MAX_PATH];
GetSystemDirectory(path, MAX_PATH);
strcat(path, "\\ws2_32.dll");

switch( ul_reason_for_call ) {
case DLL_PROCESS_ATTACH:
  h_original = LoadLibrary( path );
  if ( h_original == NULL ) return FALSE;

  p_accept = (APIWRAPPER)GetProcAddress(h_original, "accept");
  p_bind = (APIWRAPPER)GetProcAddress(h_original, "bind");
  p_closesocket = (APIWRAPPER)GetProcAddress(h_original, "closesocket");
  p_connect = (APIWRAPPER)GetProcAddress(h_original, "connect");
  p_getpeername = (APIWRAPPER)GetProcAddress(h_original, "getpeername");
  p_getsockname = (APIWRAPPER)GetProcAddress(h_original, "getsockname");
  p_getsockopt = (APIWRAPPER)GetProcAddress(h_original, "getsockopt");
  p_htonl = (APIWRAPPER)GetProcAddress(h_original, "htonl");
  p_htons = (APIWRAPPER)GetProcAddress(h_original, "htons");
  p_ioctlsocket = (APIWRAPPER)GetProcAddress(h_original, "ioctlsocket");
  p_inet_addr = (APIWRAPPER)GetProcAddress(h_original, "inet_addr");
  p_inet_ntoa = (APIWRAPPER)GetProcAddress(h_original, "inet_ntoa");
  p_listen = (APIWRAPPER)GetProcAddress(h_original, "listen");
  p_ntohl = (APIWRAPPER)GetProcAddress(h_original, "ntohl");
  p_ntohs = (APIWRAPPER)GetProcAddress(h_original, "ntohs");
  p_recv = (APIWRAPPER)GetProcAddress(h_original, "recv");
  p_recvfrom = (APIWRAPPER)GetProcAddress(h_original, "recvfrom");
  p_select = (APIWRAPPER)GetProcAddress(h_original, "select");
  p_send = (APIWRAPPER)GetProcAddress(h_original, "send");
  p_sendto = (APIWRAPPER)GetProcAddress(h_original, "sendto");
  p_setsockopt = (APIWRAPPER)GetProcAddress(h_original, "setsockopt");
  p_shutdown = (APIWRAPPER)GetProcAddress(h_original, "shutdown");
  p_socket = (APIWRAPPER)GetProcAddress(h_original, "socket");
  p_GetAddrInfoW = (APIWRAPPER)GetProcAddress(h_original, "GetAddrInfoW");
  p_GetNameInfoW = (APIWRAPPER)GetProcAddress(h_original, "GetNameInfoW");
  p_WSApSetPostRoutine = (APIWRAPPER)GetProcAddress(h_original, "WSApSetPostRoutine");
  p_FreeAddrInfoW = (APIWRAPPER)GetProcAddress(h_original, "FreeAddrInfoW");
  p_WPUCompleteOverlappedRequest = (APIWRAPPER)GetProcAddress(h_original, "WPUCompleteOverlappedRequest");
  p_WSAAccept = (APIWRAPPER)GetProcAddress(h_original, "WSAAccept");
  p_WSAAddressToStringA = (APIWRAPPER)GetProcAddress(h_original, "WSAAddressToStringA");
  p_WSAAddressToStringW = (APIWRAPPER)GetProcAddress(h_original, "WSAAddressToStringW");
  p_WSACloseEvent = (APIWRAPPER)GetProcAddress(h_original, "WSACloseEvent");
  p_WSAConnect = (APIWRAPPER)GetProcAddress(h_original, "WSAConnect");
  p_WSACreateEvent = (APIWRAPPER)GetProcAddress(h_original, "WSACreateEvent");
  p_WSADuplicateSocketA = (APIWRAPPER)GetProcAddress(h_original, "WSADuplicateSocketA");
  p_WSADuplicateSocketW = (APIWRAPPER)GetProcAddress(h_original, "WSADuplicateSocketW");
  p_WSAEnumNameSpaceProvidersA = (APIWRAPPER)GetProcAddress(h_original, "WSAEnumNameSpaceProvidersA");
  p_WSAEnumNameSpaceProvidersW = (APIWRAPPER)GetProcAddress(h_original, "WSAEnumNameSpaceProvidersW");
  p_WSAEnumNetworkEvents = (APIWRAPPER)GetProcAddress(h_original, "WSAEnumNetworkEvents");
  p_WSAEnumProtocolsA = (APIWRAPPER)GetProcAddress(h_original, "WSAEnumProtocolsA");
  p_WSAEnumProtocolsW = (APIWRAPPER)GetProcAddress(h_original, "WSAEnumProtocolsW");
  p_WSAEventSelect = (APIWRAPPER)GetProcAddress(h_original, "WSAEventSelect");
  p_WSAGetOverlappedResult = (APIWRAPPER)GetProcAddress(h_original, "WSAGetOverlappedResult");
  p_WSAGetQOSByName = (APIWRAPPER)GetProcAddress(h_original, "WSAGetQOSByName");
  p_WSAGetServiceClassInfoA = (APIWRAPPER)GetProcAddress(h_original, "WSAGetServiceClassInfoA");
  p_WSAGetServiceClassInfoW = (APIWRAPPER)GetProcAddress(h_original, "WSAGetServiceClassInfoW");
  p_WSAGetServiceClassNameByClassIdA = (APIWRAPPER)GetProcAddress(h_original, "WSAGetServiceClassNameByClassIdA");
  p_WSAGetServiceClassNameByClassIdW = (APIWRAPPER)GetProcAddress(h_original, "WSAGetServiceClassNameByClassIdW");
  p_WSAHtonl = (APIWRAPPER)GetProcAddress(h_original, "WSAHtonl");
  p_WSAHtons = (APIWRAPPER)GetProcAddress(h_original, "WSAHtons");
  p_gethostbyaddr = (APIWRAPPER)GetProcAddress(h_original, "gethostbyaddr");
  p_gethostbyname = (APIWRAPPER)GetProcAddress(h_original, "gethostbyname");
  p_getprotobyname = (APIWRAPPER)GetProcAddress(h_original, "getprotobyname");
  p_getprotobynumber = (APIWRAPPER)GetProcAddress(h_original, "getprotobynumber");
  p_getservbyname = (APIWRAPPER)GetProcAddress(h_original, "getservbyname");
  p_getservbyport = (APIWRAPPER)GetProcAddress(h_original, "getservbyport");
  p_gethostname = (APIWRAPPER)GetProcAddress(h_original, "gethostname");
  p_WSAInstallServiceClassA = (APIWRAPPER)GetProcAddress(h_original, "WSAInstallServiceClassA");
  p_WSAInstallServiceClassW = (APIWRAPPER)GetProcAddress(h_original, "WSAInstallServiceClassW");
  p_WSAIoctl = (APIWRAPPER)GetProcAddress(h_original, "WSAIoctl");
  p_WSAJoinLeaf = (APIWRAPPER)GetProcAddress(h_original, "WSAJoinLeaf");
  p_WSALookupServiceBeginA = (APIWRAPPER)GetProcAddress(h_original, "WSALookupServiceBeginA");
  p_WSALookupServiceBeginW = (APIWRAPPER)GetProcAddress(h_original, "WSALookupServiceBeginW");
  p_WSALookupServiceEnd = (APIWRAPPER)GetProcAddress(h_original, "WSALookupServiceEnd");
  p_WSALookupServiceNextA = (APIWRAPPER)GetProcAddress(h_original, "WSALookupServiceNextA");
  p_WSALookupServiceNextW = (APIWRAPPER)GetProcAddress(h_original, "WSALookupServiceNextW");
  p_WSANSPIoctl = (APIWRAPPER)GetProcAddress(h_original, "WSANSPIoctl");
  p_WSANtohl = (APIWRAPPER)GetProcAddress(h_original, "WSANtohl");
  p_WSANtohs = (APIWRAPPER)GetProcAddress(h_original, "WSANtohs");
  p_WSAProviderConfigChange = (APIWRAPPER)GetProcAddress(h_original, "WSAProviderConfigChange");
  p_WSARecv = (APIWRAPPER)GetProcAddress(h_original, "WSARecv");
  p_WSARecvDisconnect = (APIWRAPPER)GetProcAddress(h_original, "WSARecvDisconnect");
  p_WSARecvFrom = (APIWRAPPER)GetProcAddress(h_original, "WSARecvFrom");
  p_WSARemoveServiceClass = (APIWRAPPER)GetProcAddress(h_original, "WSARemoveServiceClass");
  p_WSAResetEvent = (APIWRAPPER)GetProcAddress(h_original, "WSAResetEvent");
  p_WSASend = (APIWRAPPER)GetProcAddress(h_original, "WSASend");
  p_WSASendDisconnect = (APIWRAPPER)GetProcAddress(h_original, "WSASendDisconnect");
  p_WSASendTo = (APIWRAPPER)GetProcAddress(h_original, "WSASendTo");
  p_WSASetEvent = (APIWRAPPER)GetProcAddress(h_original, "WSASetEvent");
  p_WSASetServiceA = (APIWRAPPER)GetProcAddress(h_original, "WSASetServiceA");
  p_WSASetServiceW = (APIWRAPPER)GetProcAddress(h_original, "WSASetServiceW");
  p_WSASocketA = (APIWRAPPER)GetProcAddress(h_original, "WSASocketA");
  p_WSASocketW = (APIWRAPPER)GetProcAddress(h_original, "WSASocketW");
  p_WSAStringToAddressA = (APIWRAPPER)GetProcAddress(h_original, "WSAStringToAddressA");
  p_WSAStringToAddressW = (APIWRAPPER)GetProcAddress(h_original, "WSAStringToAddressW");
  p_WSAWaitForMultipleEvents = (APIWRAPPER)GetProcAddress(h_original, "WSAWaitForMultipleEvents");
  p_WSCDeinstallProvider = (APIWRAPPER)GetProcAddress(h_original, "WSCDeinstallProvider");
  p_WSCEnableNSProvider = (APIWRAPPER)GetProcAddress(h_original, "WSCEnableNSProvider");
  p_WSCEnumProtocols = (APIWRAPPER)GetProcAddress(h_original, "WSCEnumProtocols");
  p_WSCGetProviderPath = (APIWRAPPER)GetProcAddress(h_original, "WSCGetProviderPath");
  p_WSCInstallNameSpace = (APIWRAPPER)GetProcAddress(h_original, "WSCInstallNameSpace");
  p_WSCInstallProvider = (APIWRAPPER)GetProcAddress(h_original, "WSCInstallProvider");
  p_WSCUnInstallNameSpace = (APIWRAPPER)GetProcAddress(h_original, "WSCUnInstallNameSpace");
  p_WSCUpdateProvider = (APIWRAPPER)GetProcAddress(h_original, "WSCUpdateProvider");
  p_WSCWriteNameSpaceOrder = (APIWRAPPER)GetProcAddress(h_original, "WSCWriteNameSpaceOrder");
  p_WSCWriteProviderOrder = (APIWRAPPER)GetProcAddress(h_original, "WSCWriteProviderOrder");
  p_freeaddrinfo = (APIWRAPPER)GetProcAddress(h_original, "freeaddrinfo");
  p_getaddrinfo = (APIWRAPPER)GetProcAddress(h_original, "getaddrinfo");
  p_getnameinfo = (APIWRAPPER)GetProcAddress(h_original, "getnameinfo");
  p_WSAAsyncSelect = (APIWRAPPER)GetProcAddress(h_original, "WSAAsyncSelect");
  p_WSAAsyncGetHostByAddr = (APIWRAPPER)GetProcAddress(h_original, "WSAAsyncGetHostByAddr");
  p_WSAAsyncGetHostByName = (APIWRAPPER)GetProcAddress(h_original, "WSAAsyncGetHostByName");
  p_WSAAsyncGetProtoByNumber = (APIWRAPPER)GetProcAddress(h_original, "WSAAsyncGetProtoByNumber");
  p_WSAAsyncGetProtoByName = (APIWRAPPER)GetProcAddress(h_original, "WSAAsyncGetProtoByName");
  p_WSAAsyncGetServByPort = (APIWRAPPER)GetProcAddress(h_original, "WSAAsyncGetServByPort");
  p_WSAAsyncGetServByName = (APIWRAPPER)GetProcAddress(h_original, "WSAAsyncGetServByName");
  p_WSACancelAsyncRequest = (APIWRAPPER)GetProcAddress(h_original, "WSACancelAsyncRequest");
  p_WSASetBlockingHook = (APIWRAPPER)GetProcAddress(h_original, "WSASetBlockingHook");
  p_WSAUnhookBlockingHook = (APIWRAPPER)GetProcAddress(h_original, "WSAUnhookBlockingHook");
  p_WSAGetLastError = (APIWRAPPER)GetProcAddress(h_original, "WSAGetLastError");
  p_WSASetLastError = (APIWRAPPER)GetProcAddress(h_original, "WSASetLastError");
  p_WSACancelBlockingCall = (APIWRAPPER)GetProcAddress(h_original, "WSACancelBlockingCall");
  p_WSAIsBlocking = (APIWRAPPER)GetProcAddress(h_original, "WSAIsBlocking");
  p_WSAStartup = (APIWRAPPER)GetProcAddress(h_original, "WSAStartup");
  p_WSACleanup = (APIWRAPPER)GetProcAddress(h_original, "WSACleanup");
  p___WSAFDIsSet = (APIWRAPPER)GetProcAddress(h_original, "__WSAFDIsSet");
  p_WEP = (APIWRAPPER)GetProcAddress(h_original, "WEP");
  break;
case DLL_PROCESS_DETACH:
  FreeLibrary( h_original );
  break;
default:
break;
}
return TRUE;
}

And this is HOW its used..Smiley

Example:
CODE

//ws2_32_hook.cpp:
int WINAPI h_connect(SOCKET s, struct sockaddr *name, int namelen)
{
int ret = plugin->ModOnConnect(s,name,namelen);
return p_connect(s,name,namelen);
}

//ws2_32.h:
extern int (__stdcall *p_connect)( int s, const void* name, int namelen);

Cheers.


Logged
Pages: [1] Print 
« previous next »
Jump to:  

Powered by MySQL Powered by PHP Koaxia Game Hacking Board | Powered by SMF 1.0.7.
© 2001-2005, Lewis Media. All Rights Reserved.
Valid XHTML 1.0! Valid CSS!