30.12.2011, 15:20
(Dieser Beitrag wurde zuletzt bearbeitet: 30.12.2011, 15:23 von iNvIcTUs oRCuS.)
Thema Codecave / Codeinjection...
Wurde eigentlich schon so häufig geklärt deswegen hier auch nur die Kurzform. Nehmen wir dazu das CE Tutorial (32 Bit Version).
Passwort zur Step 3 = 419482
Wir müssen den Wert/Balken auf 5000 setzen. Typ 4 Bytes...
Haben wir den Wert/Adresse gefunden würde es reichen wenn wir den Wert auf 5000 ändern und wir kommen zur nächsten Stufe. Aber hier mal die Erklärung wenn wir das selbst machen.
Als erstes Rechtsklick auf diesen Wert -> Find out what accesses...
Folgenden Befehl kriegen wir da vorgesetzt:
00421578 - 8B 83 5C040000 - mov eax,[ebx+0000045C]
Und genau da setzen wir an. Als erstes pausieren wir mal den Prozess/das Tutorial. Entweder durch einen in den Optionen definierten Hotkey, oder wir gehen eine Zeile weiter oben drüber und drücken einmal die Taste F5. Ein Breakpoint wurde gesetzt und der Prozess wurde angehalten. Nun machen wir mal eine Codeinjection. An besagter Adresse (00421578) wollen wir ja das der angezeigte Wert, bzw. der Wert der Adresse 5000 ist. Das erreichen wir innerhalb einer Codecave. Also brauchen wir erstmal einen Sprung zu einer freien Stelle im Code. Nehmen wir hier mal die Adresse 00525087. Das sieht dann folgendermaßen aus...
00421578 - E9 0A3B1000 - jmp 00525087
0042157D - 90 - nop
Nun müssen wir noch die Codecave schreiben. Diese würde dann folgendermaßen aussehen...
00525087 - C7 83 5C040000 88130000 - mov [ebx+0000045C],00001388 <<<--- Den Wert 5000 in unsere Adresse schreiben
00525091 - 8B 83 5C040000 - mov eax,[ebx+0000045C] <<<--- Das Spiel, in diesem Falle aber das CE Tutorial liest diesen aus...
00525097 - E9 E1C4EFFF - jmp 0042157D <<<--- Sprung raus aus der Codecave und zurück zur nächsten Anweisung...
0052509C - 90 - nop
Und zuguterletzt müssen wir aber noch den Breakpoint löschen und das Tutorial/ den Prozess weiter ausführen, denn nachwievor ist dieses ja pausiert. Also zurück zu Adresse 00421576 und F5 zum löschen des Breakpoints gedrückt. Nun einmal die Taste F9 um das Tutorial weiter ausführen zu lassen und staunen das man einen Schritt weiter ist.
Fazit... Was ist nun eine Codeinjection und was ist eine Codecave? In erster Linie ist jede Codecave auch eine Codeinjection. Aber nicht jede Codeinjection ist auch eine Codecave. Codeinjection bedeutet wörtlich übersetzt - Code in einen Prozess injezieren. Das ist generell die Situation die ein Trainer darstellt/ausführt, oder wie auch immer. Das heißt ich füge in einen Prozess einen bestimmten Code ein um z.b. meine Health oder Ammo etc. auf unendlich zu setzen oder sonstige Dinge auszuführen. Derselbe Sachverhalt stellt sich auch bei Cracks dar. Z.B. für Programme AnyDVD oder CloneDVD.
Wenn ich bei einem Spiel z.b. durch Noppen eines Befehls schon unendlich Ammo oder Gesundheit erreiche, habe ich nur eine Codeinjection gemacht.
Mal abgesehen davon kriegt man diesen Schritt des Tutorials auch durch eine simple Codeinjection erfolgreich hin.
Nehmen wir nochmal den Befehl von oben...
00421578 - 8B 83 5C040000 - mov eax,[ebx+0000045C
Diesen ändern wir folgendermaßen um...
00421578 - B8 88130000 - mov eax,00001388
0042157D - 90 - nop
und schon ist dieser Schritt auch so geschafft... Mittels Codeinjection...
Wurde eigentlich schon so häufig geklärt deswegen hier auch nur die Kurzform. Nehmen wir dazu das CE Tutorial (32 Bit Version).
Passwort zur Step 3 = 419482
Wir müssen den Wert/Balken auf 5000 setzen. Typ 4 Bytes...
Haben wir den Wert/Adresse gefunden würde es reichen wenn wir den Wert auf 5000 ändern und wir kommen zur nächsten Stufe. Aber hier mal die Erklärung wenn wir das selbst machen.
Als erstes Rechtsklick auf diesen Wert -> Find out what accesses...
Folgenden Befehl kriegen wir da vorgesetzt:
00421578 - 8B 83 5C040000 - mov eax,[ebx+0000045C]
Und genau da setzen wir an. Als erstes pausieren wir mal den Prozess/das Tutorial. Entweder durch einen in den Optionen definierten Hotkey, oder wir gehen eine Zeile weiter oben drüber und drücken einmal die Taste F5. Ein Breakpoint wurde gesetzt und der Prozess wurde angehalten. Nun machen wir mal eine Codeinjection. An besagter Adresse (00421578) wollen wir ja das der angezeigte Wert, bzw. der Wert der Adresse 5000 ist. Das erreichen wir innerhalb einer Codecave. Also brauchen wir erstmal einen Sprung zu einer freien Stelle im Code. Nehmen wir hier mal die Adresse 00525087. Das sieht dann folgendermaßen aus...
00421578 - E9 0A3B1000 - jmp 00525087
0042157D - 90 - nop
Nun müssen wir noch die Codecave schreiben. Diese würde dann folgendermaßen aussehen...
00525087 - C7 83 5C040000 88130000 - mov [ebx+0000045C],00001388 <<<--- Den Wert 5000 in unsere Adresse schreiben
00525091 - 8B 83 5C040000 - mov eax,[ebx+0000045C] <<<--- Das Spiel, in diesem Falle aber das CE Tutorial liest diesen aus...
00525097 - E9 E1C4EFFF - jmp 0042157D <<<--- Sprung raus aus der Codecave und zurück zur nächsten Anweisung...
0052509C - 90 - nop
Und zuguterletzt müssen wir aber noch den Breakpoint löschen und das Tutorial/ den Prozess weiter ausführen, denn nachwievor ist dieses ja pausiert. Also zurück zu Adresse 00421576 und F5 zum löschen des Breakpoints gedrückt. Nun einmal die Taste F9 um das Tutorial weiter ausführen zu lassen und staunen das man einen Schritt weiter ist.
Fazit... Was ist nun eine Codeinjection und was ist eine Codecave? In erster Linie ist jede Codecave auch eine Codeinjection. Aber nicht jede Codeinjection ist auch eine Codecave. Codeinjection bedeutet wörtlich übersetzt - Code in einen Prozess injezieren. Das ist generell die Situation die ein Trainer darstellt/ausführt, oder wie auch immer. Das heißt ich füge in einen Prozess einen bestimmten Code ein um z.b. meine Health oder Ammo etc. auf unendlich zu setzen oder sonstige Dinge auszuführen. Derselbe Sachverhalt stellt sich auch bei Cracks dar. Z.B. für Programme AnyDVD oder CloneDVD.
Wenn ich bei einem Spiel z.b. durch Noppen eines Befehls schon unendlich Ammo oder Gesundheit erreiche, habe ich nur eine Codeinjection gemacht.
Mal abgesehen davon kriegt man diesen Schritt des Tutorials auch durch eine simple Codeinjection erfolgreich hin.
Nehmen wir nochmal den Befehl von oben...
00421578 - 8B 83 5C040000 - mov eax,[ebx+0000045C
Diesen ändern wir folgendermaßen um...
00421578 - B8 88130000 - mov eax,00001388
0042157D - 90 - nop
und schon ist dieser Schritt auch so geschafft... Mittels Codeinjection...
Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer !!!
Traineranfragen per PM werden prinzipiell gelöscht...
Traineranfragen per PM werden prinzipiell gelöscht...