Hey guys i dont know why my source doesnt work. Whats the mistake?
Code:
#include "stdio.h"
#include "winsock2.h"
#include "windows.h"
#include <iostream>
#include <commctrl.h>
#include <time.h>
using namespace std;
#pragma comment(lib, "ws2_32.lib")
typedef int (WINAPI* t_WSARecv)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
typedef int (WINAPI* t_WSASend)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE );
t_WSASend o_WSASend;
t_WSARecv o_WSARecv;
void *DetourFunction(BYTE *src, const BYTE *dst, const int len) // credits to gamedeception
{
BYTE *jmp = (BYTE*)malloc(len+5);
DWORD dwback;
VirtualProtect(src, len, PAGE_READWRITE, &dwback);
memcpy(jmp, src, len); jmp += len;
jmp[0] = 0xE9;
*(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5;
src[0] = 0xE9;
*(DWORD*)(src+1) = (DWORD)(dst - src) - 5;
VirtualProtect(src, len, dwback, &dwback);
return (jmp-len);
}
int WINAPI hook_WSARecv(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
MessageBox(HWND_DESKTOP,L"Blabla",L"Titel",MB_OK);
return o_WSARecv(s,lpBuffers,dwBufferCount,lpNumberOfBytesRecvd,lpFlags,lpOverlapped,lpCompletionRoutine);
}
int WINAPI hook_WSASend(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
MessageBox(HWND_DESKTOP,L"Blabla",L"Titel",MB_OK);
return o_WSASend(s,lpBuffers,dwBufferCount,lpNumberOfBytesSent,dwFlags,lpOverlapped,lpCompletionRoutine);
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD Ergebnis, LPVOID lpReserved)
{
UNREFERENCED_PARAMETER(lpReserved);
switch(Ergebnis)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hModule);
o_WSASend = (t_WSASend)DetourFunction((PBYTE)GetProcAddress(GetModuleHandle(L"ws2_32.dll"), "WSASend"), (PBYTE)hook_WSASend,5);
o_WSARecv = (t_WSARecv)DetourFunction((PBYTE)GetProcAddress(GetModuleHandle(L"ws2_32.dll"), "WSARecv"), (PBYTE)hook_WSARecv,5);
break;
}
return true;
}