Code:
#include <Windows.h>
#include <iostream>
DWORD BasePointer = 0; // Wir deklarieren den BasePointer und setzten ihm den Wert 0
#define Points 0x000005ba // Hier definieren wir unseren Offset des Pointers
#define Points2 0x00000004
bool State = false; // Brauchen wir später für das einschalten und auschalten des Hacks
void punkte() // unsere main funktion
{
if(State)
{
DWORD dwBasePointer = *(DWORD*)BasePointer; // Unser Pointer den wir als hilfe verwenden werden um einen Wert der Adresse hinzu zufügen
if(dwBasePointer != 0) // Wenn der Pointer nicht 0 ist wird der Wert zugewiesen
{
DWORD &dwPoints = *(DWORD*)(dwBasePointer + Points); // Hier machen wir eine neue Variable durch den Base Pointer und denn Offset und haben somit die Pointer Adresse
DWORD &dwPoints2 = *(DWORD*)(dwPoints + Points2);
std::cout << dwPoints2 << std::endl;
dwPoints2 +=5;
}
}
else // Vom State, also deaktivieren wir hier den Hack
{
DWORD dwBasePointer = *(DWORD*)BasePointer; // machen wieder eine neue Variable wie oben
if(dwBasePointer != 0) // wenn der Pointer nicht 0 ist wird der Wert zugewiesen
{
DWORD &dwPoints = *(DWORD*)(dwBasePointer + Points); // wie oben definieren wir mithilfe des Pointers und Offsets die Adresse
DWORD &dwPoints2 = *(DWORD*)(dwPoints + Points2 );
dwPoints2 = 0; //setzt den wert 0, also ist der Hack deaktiviert
std::cout << "Fail" <<std::endl;
}
}
}
DWORD WINAPI HackThread(LPVOID unused)
{
AllocConsole();
FILE *stream;
freopen_s( &stream, "CONOUT$", "w", stdout );
freopen_s(&stream, "CONIN$","r",stdin);
//---Hier wird unser BasePointer ausgerechnet !
DWORD ImageBase = (DWORD)GetModuleHandle(0); //Die Image Adresse ist in diesem fall FT_Client, holen uns also den Module Handle
BasePointer = ImageBase + 0x003D0868; // Um den BasePointer zu bekommen nehmen wir die Image Adresse und unsere Modul Adresse
//---------------------------------------------
for(; ;) //Eine unendliche schleife weil wir die Adresse gefreezt haben wollen ;)
{
punkte(); //unsere main funktion wird ausgeführt
if(GetAsyncKeyState(VK_F1)&1)State =! State; // Mit F1 aktivieren und deaktivieren wir den Hack
Sleep(10);
}
}
BOOL WINAPI DllMain(HINSTANCE mod, DWORD DWORD_GRUND, LPVOID res)
{
switch(DWORD_GRUND)
{
case DLL_PROCESS_ATTACH: //Falls die dll erfolgreich injeziert wird
CreateThread(0, 0, &HackThread , 0, 0, 0); // Wir erstellen den Thread in dem dann später injezierten Process
break;
case DLL_PROCESS_DETACH: //Falls die dll den Process nicht mehr findet
MessageBoxA(0, "Not Loaded", "Info",0); //Eine Messagebox die sagt das dll nicht mehr geladen ist
break;
}
return TRUE;
}
Ich verstehe einfach nicht was falsch sein kann evtl liegt der Fehler dabei wie ich versuche die ImageBase auszulesen ,und er schreibt deshalb in eine Falsche addresse wodurch sich das Spiel schließt ,aber ich habe es auch schon mir ner asm Funktion zum auslesen der Image Base versucht aber das selbe ergebnis der Client schließt einfach .
Sieht jmd von euch evtl woran der Fehler liegen könnte?






