Hallo Leute!
Ich möchte euch heute zeigen, wie ihr selber Hackfunktionen in WarRock finden könnt. Zunächst braucht ihr erstmal einen Debugger,den ich euch unten als Download zu verfügung stellen werde. Wenn ihr den Debugger heruntergeladen habt, könnt ihr euch die gedumpte WarRock.exe unten herrunterladen.
Nun können wir anfangen.
Debugger
Download:

---------------------------------------------------------------
WarRock
Download:

Virustotal:

Wenn ihr euch den Debugger und die WarRock.exe heruntergeladen habt, können wir ja anfangen.
Zunächst sollten wir erstmal eine Idee haben was wir in WarRock finden können, dazu Spielen wir eine Runde. Nach einiger Zeit spielen im Zombie Modus, starb ich an einer Verblutung. Bevor ich starb kam die Nachricht: "Du wirst Gesundheitspunkte verlieren, wenn Du nicht behandelt wirst". Jetzt gibt es ein Item in WarRock das sich "Compressed Bandage" nennt, das die Blutungen stoppt. Jetzt haben wir die erste Idee, ein "Compressed Bandage Item Hack"!
Jetzt können wir den Debugger starten und die WarRock Dumped.exe öffnen.
Wir starten also Olly Debugger und drücken dann F3.
Wenn wir F3 gedrückt habt, könnt ihr auf eure Dateien am Computer zugreifen.
Jetzt wählt die WarRock Dumped.exe die ihr heruntergeladen habt und drückt auf "Öffnen". Wenn ihr sie nun geöffnet habt, dauert es ein moment, das sie geladen wird. Wenn sie fertig geladen ist, sollte es so aussehen:
Die Dumped WarRock.exe ist jetzt fertig geladen.
Wir möchten jetzt die Text Strings von WarRock auslesen, also machen wir Rechtsklick auf einer Stelle im Code, gehen dann auf "Search for" und dann auf "All referenced strings" un bestätigen. Das ganze sollte dann so aussehen:
Olly Debugger sucht jetzt einen moment alle Text Strings in WarRock und listet sie in einen neuen Fenster auf.
Nun haben wir den Text String: "Du wirst Gesundheitspunkte verlieren, wenn Du nicht behandelt wirst" der sich an der String Stelle "m34" befindet.
-----------------------------------------------------
Woher ich weiß warum der String
"m34" -> "Du wirst Gesundheitspunkte verlieren, wenn Du nicht behandelt wirst"
Ist ?
Benutzt einfach die Webseite:

-----------------------------------------------------
Wir machen jetzt Rechtsklick im neuen Fenster und wählen "Search for text", dann geben wir "m34" ein und drücken "OK".
Das Fenster führt uns als erstes zu einen String Namens: "m348" der noch nicht der String ist, denn wir suchen.
Jetzt machen wir Rechtsklick und wählen: "Search again", bis wir nur den String: "m34" haben.
Wenn wir den String: "m34" haben, drücken wir Enter und kommen zu der eigentlichen Funktion die wir suchen.
Wenn wir die Funktion jetzt uns näher betrachten, können wir oben einen Check von einer Adresse sehen, die die Funktion zum Aufrufen, bzw. nicht zum Aufrufen bringt.
Ich habe euch jetzt mal die Funktion so beschrieben, wie ich sie verstehe:
Okay, wenn wir uns das jetzt genauer anschauen, sehen wir also das es ein Check gibt, der die Funktion aufruft, oder nicht.
Wenn wir jetzt die Funktion nicht zum aufrufen bringen, sollten wir unsere Hack Funktion haben, also es gibt 2 Möglichkeiten.
Die 1. Möglichkeit wäre, den Check (JNE SHORT ) zu ( JMP SHORT ) machen, dann würde er die Funktion den Check überspringen und wir hätten unsere Hack Funktion. In C++ sollte das dann so aussehen:
Code:
DWORD dwOldProtect; VirtualProtect((LPVOID)(0x5B181F),1,PAGE_READWRITE,&dwOldProtect); memcpy((LPVOID)(0x5B181F),(LPBYTE)(0xEB),1); VirtualProtect((LPVOID)(0x5B181F),1,dwOldProtect,&dwOldProtect);
Jetzt gibt es ja noch die 2. Variante.
Wir nehmen jetzt einfach die Adresse, bei den der Wert abgefragt wird (0xA305A0).
Die Abfrage lautet: "CMP BYTE PTR DS:[0A305A0],BL"
Jetzt wissen wir das der die Adresse den Type Byte hat und das sie höhst wahrscheinlich das Prinzip hat, 1 = AN / 0 = AUS.
In C++ sollte das dann so aussehen:
Code:
*(BYTE*)(0xA305A0) = 0x1;
Ich hoffe, ich habe euch geholfen und ihr versteht es.
Ich habe mir nicht viel Mühe in der Rechtschreibung gegeben und ich nehme gerne Kritik an, falls ich was falsch erklärt habe, oder es anders machen sollte.






