Home of Gamehacking

Normale Version: Mittels DLL Injection eine Methode im Spiel aufrufen
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo, wie ist sowas möglich (was in der Überschrift steht) bzw. wie kann ich die Funktionen bzw. Methoden eines anderen Processes (in diesem Fall eines Spieles) finden?
(Gehen wir mal davon aus, dass kein Source Code vom Game verfügbar ist).

Z.B. ist es ein Spiel, wo der Spieler Geld bekommt und ausgibt. Dann gibt es ja mindestens eine Methode, die das Geld ändert z.B. setMoney().

- Wie und mit welcher Hilfe (Tools) kann man so eine Funktion/Methode finden?
- Wie benutzt man so eine gefundene Methode in eigener DLL, die man später injected?
Hey,
da hast du dir ja mal wieder nicht die einfachste Aufgabe ausgesucht. Um umzusetzen was du dir vorstellst musst du ne Menge Ahnung von Assembler haben.
Du musst nämlich nicht nur in Erfahrung bringen welche die richtige Funktion ist, sondern auch wieviele Argumente die Funktion übergeben bekommt, welche das sind und was du Funktion zurückgibt. Dafür würde ich OllyDBG und IDA benutzen. Einfach über IDA ne statische Analyse der Funktion und Parameter machen und mittels Olly die Funktion breakpointen--> im Spiel ausführen--> gucken welche Adressen und Werte die Parameter haben. Die Funktion an sich würde ich folgendermaßen im Beispiel Geldcheat suchen:
1. Geldadresse finden (CheatEngine)
2. Find out what writes to this adress (CheatEngine)
3. in Olly breakpointen und Funktion reversen. Ggf. backtracen

Wenn du alle Informationen hast kannst du die Funktion über inline ASM callen (nicht empfehlenswert), oder indem du nen Funktionsprototyp definierst. Hier der Code dafür:

C Code
//Funktionsprototyp
typedef void(__thiscall *tSetMoney)(DWORD* pThis, int iMoney);
tSetMoney oSetMoney;
//Adresse funktion zuweisen
oSetMoney = (tSetMoney)(dwModuleBase + OFFSET_SETMONEY);

//Funktion ausführen
void myFunc()
{
     oSetMoney(&playerBase, 1337);
}