Hey,
Habe vorhin ein Hook zusammengeschraubt womit ich mir bisschen die Pakete von Netzwerk Programmen anschauen wollte. In Counterstrike funktioniert das ganze ohne große Probleme, bei Firefox oder WoW schmiert es aber mit ner Acces Violation ab.. hab ich da irgendwas übersehen im Code?
Versuch schon seit gut ner Stunde rum, bekomms aber nicht gebacken.. mittlerweile schaut der Code auch schon bissel wüsst aus vom rumprobieren.. :rolleyes:
Hab ich da ne Deklation falsch gesetzt oder sonstige Noob fehler die man normal sehen sollte? :confused:
Bin verwirrt :s..
Die Log vom Wow Ordner sagt mir leider auch nicht all zu viel..
Grüße:handsdown:
Habe vorhin ein Hook zusammengeschraubt womit ich mir bisschen die Pakete von Netzwerk Programmen anschauen wollte. In Counterstrike funktioniert das ganze ohne große Probleme, bei Firefox oder WoW schmiert es aber mit ner Acces Violation ab.. hab ich da irgendwas übersehen im Code?
Versuch schon seit gut ner Stunde rum, bekomms aber nicht gebacken.. mittlerweile schaut der Code auch schon bissel wüsst aus vom rumprobieren.. :rolleyes:
Code:
#include <windows.h>
#include <iostream>
using namespace std;
#pragma comment(lib, "ws2_32.lib")
void WINAPI my_thread();
void log(char* msg);
void* detourFunc(BYTE *src, const BYTE *dst, const int len);
int WINAPI hkSend(SOCKET sock, const char* buffer, int len,int flags);
//WSA Funktion "send"
typedef int (__stdcall * send_t)(SOCKET sock, const char* buffer, int len,int flags);
send_t pSend;
BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)my_thread, 0, 0, 0);
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
void GetConsole(LPCSTR sTitle) {
FILE *fh;
AllocConsole();
freopen_s(&fh, "CONOUT$", "wb", stdout);
SetConsoleTitleA(sTitle);
}
void WINAPI my_thread()
{
GetConsole("Sendlog");
DWORD dwSend = (DWORD)GetProcAddress(GetModuleHandleA("ws2_32.dll"), "send");
pSend = (send_t)detourFunc((byte*)dwSend, (byte*)hkSend, 5);
}
int WINAPI hkSend(SOCKET sock, const char* buffer, int len,int flags)
{
printf("buffer: %p\n", buffer);
printf("length: %i\n", len);
printf("flags: %i\n", flags);
printf("---------------------\n");
return pSend(sock, buffer, len, flags);
}
void log(char* msg)
{
FILE* fp = fopen("log.txt","a");
fputs(msg, fp);
fclose(fp);
}
void* detourFunc(BYTE *src, const BYTE *dst, const int len) //gamedeception hook funktion..
{
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);
}
Bin verwirrt :s..
Die Log vom Wow Ordner sagt mir leider auch nicht all zu viel..
Code:
Program: Wow.exe ProcessID: 1132 Exception: 0xC0000005 (ACCESS_VIOLATION) at 0023:104E2F78 The instruction at "0x104E2F78" referenced memory at "0x104E2F78". The memory could not be "executed".