Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <windows.h>
- #include "stdio.h"
- #include "detours/detours.h"
- #include "Winsock2.h"
- #pragma comment(lib, "ws2_32.lib")
- #pragma comment(lib, "C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\Include\\detours\\detours.lib")
- SOCKET mSock = 0;
- int mDest=0,mLen=0;
- char* mPacket;
- extern void WS2_Callback(char* meth, char*p);
- extern int IgnoreRecv();
- int WINAPI MySend(SOCKET s, const char* buf, int len, int flags);
- int WINAPI MyRecv(SOCKET s, char* buf, int len, int flags);
- HMODULE hLib = LoadLibrary("ws2_32.dll");
- typedef int (WINAPI *SendPtr)(SOCKET s, const char* buf, int len, int flags);
- typedef int (WINAPI *SendtoPtr)(SOCKET s,const char*buf,int len,int flags,const sockaddr*to,int tolen);
- typedef int (WINAPI *RecvPtr)(SOCKET s, char* buf, int len, int flags);
- typedef int (WINAPI *RecvFromPtr)(SOCKET s, char *buf, int len, int flags, sockaddr *from, int *fromlen);
- SendPtr pSend = (SendPtr)GetProcAddress(hLib, "send");
- RecvPtr pRecv = (RecvPtr)GetProcAddress(hLib, "recv");
- RecvFromPtr pRecvFrom = (RecvFromPtr)GetProcAddress(hLib, "recvfrom");
- SendtoPtr pSendto = (SendtoPtr)GetProcAddress(hLib, "sendto");
- //int ( WINAPI *Real_WSARecvEx )( SOCKET s, char *buf, int len, int *flags ) = WSARecv;
- int WINAPI MySendTo(SOCKET s,const char*buf,int len,int flags,const sockaddr*to,int tolen)
- {
- //if(IgnoreRecv() == 12 && buf[0] == '') return 1;
- if(mDest == 1 && mPacket != "") {
- pSendto(s, mPacket, mLen, flags,to,tolen);
- mDest = 0;
- };
- int retInt = pSendto(s,buf,len,flags,to,tolen);
- WS2_Callback("SENDTO",(char*)buf);
- return retInt;
- }
- int WINAPI MySend(SOCKET s, const char* buf, int len, int flags)
- {
- if(mDest == 2 && mPacket != "") {
- pSend(s, mPacket, mLen, flags);
- mDest = 0;
- };
- int retInt;
- retInt = pSend(s, buf, len, flags);
- WS2_Callback("SEND",(char*)buf);
- return retInt;
- }
- int WINAPI MyRecv(SOCKET s, char* buf, int len, int flags)
- {
- if(mDest == 1 && mPacket != "") {
- pRecv(s, mPacket, mLen, flags);
- mDest = 0;
- };
- int retInt;
- retInt = pRecv(s, buf, len, flags);
- WS2_Callback("RECV",buf);
- return retInt;
- }
- int WINAPI MyRecvFrom(SOCKET s, char *buf, int len, int flags, sockaddr *from, int *fromlen)
- {
- int retInt;
- if(IgnoreRecv() == 12 && buf[0] == '') return 1;
- retInt = pRecvFrom(s, buf, len, flags,from,fromlen);
- WS2_Callback("RECVFROM",buf);
- return retInt;
- }
- void Hookar() {
- DetourTransactionBegin();
- DetourUpdateThread(GetCurrentThread());
- //sendto(SOCKET s,const char*buf,int len, int flags,const sockaddr *to, int tolen);
- DetourAttach(&(PVOID&)pSend, MySend);
- DetourAttach(&(PVOID&)pSendto, MySendTo);
- DetourAttach(&(PVOID&)pRecv, MyRecv);
- DetourAttach(&(PVOID&)pRecvFrom, MyRecvFrom);
- DetourTransactionCommit();
- };
- void SendPacket(char*p,int mod,int ml) {
- if(mod==0)return;
- mPacket=p;
- mDest=mod;
- mLen = ml;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement