#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;
}