Code:
#include "stdafx.h" #include <iostream> using namespace std; DWORD BasePointer = 0; // Wir deklarieren den BasePointer und setzten ihm den Wert 0 #define Points 0x00000424 // Hier definieren wir unseren Offset des Pointers bool State = false; // Brauchen wir später für das einschalten und auschalten des Hacks DWORD BasePointer2 = 0; // Wir deklarieren den BasePointer und setzten ihm den Wert 0 #define Points2 0x00000424 // Hier definieren wir unseren Offset des Pointers bool State2 = false; void name() // 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 } } 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 dwPoints = 0; //setzt den wert 0, also ist der Hack deaktiviert } } } void pwd() // unsere main funktion { if(State) { DWORD dwBasePointer2 = *(DWORD*)BasePointer2; // Unser Pointer den wir als hilfe verwenden werden um einen Wert der Adresse hinzu zufügen if(dwBasePointer2 != 0) // Wenn der Pointer nicht 0 ist wird der Wert zugewiesen { DWORD &dwPoints2 = *(DWORD*)(dwBasePointer2 + Points2); // Hier machen wir eine neue Variable durch den Base Pointer und denn Offset und haben somit die Pointer Adresse } } else // Vom State, also deaktivieren wir hier den Hack { DWORD dwBasePointer2 = *(DWORD*)BasePointer2; // machen wieder eine neue Variable wie oben if(dwBasePointer2 != 0) // wenn der Pointer nicht 0 ist wird der Wert zugewiesen { DWORD &dwPoints2 = *(DWORD*)(dwBasePointer2 + Points2); // wie oben definieren wir mithilfe des Pointers und Offsets die Adresse dwPoints2 = 0; //setzt den wert 0, also ist der Hack deaktiviert } } } DWORD WINAPI HackThread(LPVOID unused) { //---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 + 0x003C5448; // 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 ;) { name(); //unsere main funktion wird ausgeführt if(GetAsyncKeyState(VK_F1)&1)State =! State; // Mit F1 aktivieren und deaktivieren wir den Hack Sleep(10); } } DWORD WINAPI HackThread(LPVOID unused) { //---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 + 0x003C5448; // 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 ;) { pwd(); //unsere main funktion wird ausgeführt if(GetAsyncKeyState(VK_F2)&1)State =! State2; // 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, "Fehler 0x001", "Info",0); //Eine Messagebox die sagt das dll nicht mehr geladen ist break; } return TRUE; }