• Trainer
  • Forums
  • Suche
  • Members
  • Kalender
  • Hilfe
  • Extras
Forum stats
Show team
Neue Beiträge ansehen
Heutige Beiträge ansehen
Home of Gamehacking - Archiv
Login to account Create an account
Login
Benutzername:
Passwort: Passwort vergessen?
 



  Home of Gamehacking - Archiv Gamehacking Gamehacking
« Zurück 1 2 3 4 5 6 ... 8 Weiter »
Harvest Massive Encounter v1.18 Singleplayer Money cheat

Ansichts-Optionen
Harvest Massive Encounter v1.18 Singleplayer Money cheat
iNvIcTUs oRCuS Offline
Super Moderator
****
Beiträge: 2.688
Themen: 529
Registriert seit: Aug 2010
Bewertung: 19
#15
04.03.2013, 18:32
Ich sage mal so...
Falsch gemacht hast Du in diesem Sinne nichts. Aber Du hast eben eine Sache nicht bedacht.
Die Encryption/Decryption Routine wird mehrfach aufgerufen.
Z.B. wird diese aufgerufen wenn der Geldwert berrechnet wird. Auch wird diese aufgerufen wenn der Threat Level kalkuliert wird. Und ebenfalls wird diese aufgerufen wenn es z.B. um die Baukosten geht.

Um dir das vielleicht mal grafisch zu zeigen hab ich mal ganz schnell ein Schema aufgestellt wie das bei diesem Spiel aussieht...
   

Wenn das Spiel im Programmcode an diese Adresse kommt:
[code=ASM]004101C2 |. E8 09A40500 |call 0046A5D0h[/code]
Dann werden sämtliche Daten an die Routine übergeben die von Nöten sind. D.h. sämtliche Register haben die benötigten Werte die relevant sind. Die Routine wird durchlaufen und aus der Routine kehrt das Spiel an diese Adresse zurück:
[code=ASM]004101C7 |. 8986 E4010000 |mov dword ptr [esi+000001E4h], eax[/code]
Und der Geldwert der im Register EAX steht wird zurück in den Speicher an Adresse "[esi+000001E4h]" geschrieben.
D.h. wenn Du deinen Money Cheat innerhalb der Encryption Routine einbaust dann musst Du auch sicherstellen das wenn dieser Cheat ausgeführt wird auch momentan nur eine Geldadresse durchlaufen wird.
Und da Du deinen Cheat sicherlich ohne die Adressen zu filtern implementiert hast wird dieser auch ausgeführt wenn z.B. eine Threat Level oder Baukosten Adresse durchlaufen wird.

Und das EDI öfters mal einen anderen Wert bzw. ne andere Adresse hat liegt wohl daran das die Verschlüsselung dynamisch ist. Sieht man auch das der XOR Schlüssel öfters bzw. immer wieder anders ist. Aber das sind eben nur Daten die innerhalb der Routine von Belang sind. Schlussendlich ist am Ende der Funktion der Wert um den es geht immer im EAX Register zu finden.


Wie ich schon weiter oben schrieb hab ich mal ne Lösung gebastelt die allerdings 2 Codecaves erfordert.



Codecave 1 / Codeinjection 1 hab ich hier gemacht:
Der Originalcode "004101C2 |. E8 09A40500 |call 0046A5D0h" wird mit dem Sprung zur Codecave "004101C2 - E9 4902FFFF - jmp 00400410" überschrieben. Folglich befindet sich die Codecave 1 an Adresse 00400410h. Die Codecave 1 sind dann folgendermaßen aus:
[code=ASM]00400410 - C7 05 00044000 78563412 - mov [00400400],12345678
0040041A - E8 B1A10600 - call 0046A5D0
0040041F - E9 A3FD0000 - jmp 004101C7[/code]Und was passiert da? Das ist schnell erklärt. Innerhalb der Codecave wird der HEX-Wert 12345678 an Adresse 00400400h in den Speicher geschrieben. Das ist einfach ein fiktiver Wert den ich selbst festgelegt hab um sicherzustellen das wenn die Routine aufgerufen wird die Berrechnung des Geldwertes stattfindet. Dazu später noch mehr.
Danach wird der Originalcode geschrieben bzw. ausgeführt der ja durch den Sprung zu Codecave überschrieben wurde. Zuguterletzt wird aus der Codecave zurück in den normalen Programmablauf gesprungen. Deswegen der Befehl "0040041F - E9 A3FD0000 - jmp 004101C7".


Die zweite Codeinjection hab ich dann innerhalb der Encryption-Routine gemacht. Diese sieht dann folgendermaßen aus...
Der Originalcode: [code=ASM]0046A5D9 - 57 - push edi
0046A5DA - 8B 38 - mov edi,[eax]
0046A5DC - 33 39 - xor edi,[ecx][/code]wird hier mit dem Jump zur Codecave 2, nämlich "0046A5D9 - E9 525EF9FF - jmp 00400430" überschrieben. Folglich befindet sich die Codecave 2 an Adresse 00400430h. Die Codecave 2 sieht dann folgendermaßen aus:
[code=ASM]00400430 - 57 - push edi
00400431 - 81 3D 00044000 78563412 - cmp [00400400],12345678
0040043B - 74 09 - je 00400446
0040043D - 8B 38 - mov edi,[eax]
0040043F - 33 39 - xor edi,[ecx]
00400441 - E9 98A10600 - jmp 0046A5DE
00400446 - C7 05 00044000 00000000 - mov [00400400],00000000
00400450 - BF E7030000 - mov edi,000003E7
00400455 - 33 39 - xor edi,[ecx]
00400457 - 89 38 - mov [eax],edi
00400459 - EB E4 - jmp 0040043F
0040045B - 90 - nop [/code]So und was passiert nun hier? Ich denke das dürfte dir schon fast klar sein. In erster Linie wird der Originalcode "push edi" ausgeführt. Der nächste Befehl "cmp [00400400],12345678" prüft nun die Adresse [00400400] ob diese den Wert 12345678h hat. Wenn der Wert ungleich des erwarteten ist dann wird der weitere Originalcode ausgeführt und aus der Codecave zurück in den normalen Programmablauf gesprungen. Für das Spiel, bzw. unseren Cheat, würde das dann bedeuten das die Routine zwar aufgerufen wurde, aber nicht um den Geldwert zu berrechnen. Wenn der Wert allerdings gleich ist dann wird zu Adresse 00400446h gesprungen und der eigentliche Cheat beginnt. Zuerst wird der Wert der Adresse 00400400h wieder auf 0 gesetzt, das ist ganz wichtig. Sonst wäre wieder der Fall gegeben wie bei dir. Der Cheat würde immer durchlaufen und sämtliche Werte würden auf ein und denselben gesetzt. Mit dem Befehl "mov edi,000003E7" geb ich praktisch den Geldwert vor den ich später im Spiel immer haben möchte (3E7hex = 999dez). Dieser Wert wird mit dem aktuellen XOR Schlüssel, welcher sich in [ECX] befindet, verschlüsselt. Das Register EDI enthält nun den verschlüsselten Geldwert. Dieser verschlüsselte Wert wird mit dem Befehl "mov [eax],edi" in die Geldadresse zurückgeschrieben die zu diesem Zeitpunkt noch den ursprünglichen Geldwert enthält. Zuguterletzt wird mit dem Befehl "jmp 0040043F" zurück zu Adresse 0040043Fh gesprungen um den restlichen Originalcode auszuführen und um schließlich wieder raus aus der Codecave zu springen und den weiteren Programmablauf zu folgen...
Das ist der ganze Zauber.
Nur eins noch... Das ist nur eine, bzw. meine Lösung. Soll heißen, es gibt noch andere Lösungsmöglichkeiten aber diese ist nur eine davon.
Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer !!!

Traineranfragen per PM werden prinzipiell gelöscht...

[Bild: signatur6akm7.gif]
Suchen
Antworten
Share Thread:            


Nachrichten in diesem Thema
Harvest Massive Encounter v1.18 Singleplayer Money cheat - von Injexdoor - 26.02.2013, 02:15
RE: Harvest Massive Encounter v1.18 Singleplayer Money cheat - von iNvIcTUs oRCuS - 26.02.2013, 17:42
RE: Harvest Massive Encounter v1.18 Singleplayer Money cheat - von Acubra - 26.02.2013, 23:35
RE: Harvest Massive Encounter v1.18 Singleplayer Money cheat - von iNvIcTUs oRCuS - 26.02.2013, 23:49
RE: Harvest Massive Encounter v1.18 Singleplayer Money cheat - von Injexdoor - 27.02.2013, 00:15
RE: Harvest Massive Encounter v1.18 Singleplayer Money cheat - von iNvIcTUs oRCuS - 27.02.2013, 00:57
RE: Harvest Massive Encounter v1.18 Singleplayer Money cheat - von Acubra - 27.02.2013, 09:47
RE: Harvest Massive Encounter v1.18 Singleplayer Money cheat - von Injexdoor - 28.02.2013, 00:36
RE: Harvest Massive Encounter v1.18 Singleplayer Money cheat - von Acubra - 28.02.2013, 00:56
RE: Harvest Massive Encounter v1.18 Singleplayer Money cheat - von iNvIcTUs oRCuS - 28.02.2013, 15:45
RE: Harvest Massive Encounter v1.18 Singleplayer Money cheat - von Injexdoor - 01.03.2013, 00:01
RE: Harvest Massive Encounter v1.18 Singleplayer Money cheat - von iNvIcTUs oRCuS - 01.03.2013, 01:49
RE: Harvest Massive Encounter v1.18 Singleplayer Money cheat - von iNvIcTUs oRCuS - 03.03.2013, 19:23
RE: Harvest Massive Encounter v1.18 Singleplayer Money cheat - von Injexdoor - 04.03.2013, 01:22
RE: Harvest Massive Encounter v1.18 Singleplayer Money cheat - von iNvIcTUs oRCuS - 04.03.2013, 18:32

  • Druckversion anzeigen
  • Thema abonnieren


Benutzer, die gerade dieses Thema anschauen:
1 Gast/Gäste

  • Kontakt
  • Forum team
  • Forum stats
  • Nach oben
 
  • RSS-Synchronisation
  • Lite mode
  • Home of Gamehacking - Archiv
  • Help
 
Forum software by © MyBB - Theme © iAndrew 2014



Linearer Modus
Baumstrukturmodus