12.03.2012, 17:07
Aufgeben? NIEMALS! ^^
Ne Codeinjection ist kein Hexenwerk und eigentlich auch
recht leicht zu verstehen...
[code=asm]
0B30DA80 - mov [esp+20],eax
0B30DA84 - mov ecx,[esp+20]
0B30DA88 - movzx eax,word ptr [esi+00001422] <-- Originalcode
0B30DA8F - mov [esp+2C],ecx
0B30DA93 - movzx ecx,word ptr [esi+000015A6]
[/code]
Der Originalcode ist in diesem Fall eine Funktion, die sich um die Lebensenergie
des Spielers kümmert und die Lebensenergie befindet sich in esi+1422.
Bei einer Codeinjection wird quasi eine Umleitung erschaffen die in einen
freien Speicherbereich führt.
Der Speicherbereich sollte groß genug sein, um darin arbeiten zu können.
Das ganze würde dann so aussehen:
[code=asm]
0B30DA80 - mov [esp+20],eax
0B30DA84 - mov ecx,[esp+20]
0B30DA88 - jmp 400400 <-- Hier ist nun die Umleitung
0B30DA8D - nop
0B30DA8E - nop
0B30DA8F - mov [esp+2C],ecx
0B30DA93 - movzx ecx,word ptr [esi+000015A6]
[/code]
Wird nun diese Codestelle erreicht, so springt das Programm zur Adresse 400400
und dort können wir nun bequem arbeiten.
[code=asm]
00400400 - mov word ptr[esi+00001422],03E7 <-- Unser Befehl
00400409 - movzx eax,word ptr [esi+00001422] <-- Originalcode
00400410 - jmp 0B30DA8D <-- Von der Umleitung wieder zurück
[/code]
Unser Befehl schreibt nun den Wert 999 in die Adresse, die unsere aktuelle Lebensenergie enthält.
Der Originalcode muss auch in der Umleitung auftauchen, da sonst das Spiel
nicht mehr weiter weiß und in den meisten Fällen führt das zum crash.
Damit nun das Progamm/Spiel wie gewohnt weiter im Code machen kann, springen
wir mit jmp 0B30DA8D wieder zurück.
Kleine Erklärung zum besseren Verständnis:
Stell dir den Hauptcode wie eine Hauptstraße vor.
Auf dieser Hauptstraße fährst du mit deinem Auto immer von oben nach unten.
Dein Auto hat immer die gleiche Farbe (weiß).
Da du gerne eine andere Farbe haben möchtest, folgst du einer "Umleitung".
Diese Umleitung führt dich auf eine Nebenstraße auf der sich auch ein Lackierer befindet.
Dieser Lackierer gibt deinem Auto eine neue Farbe und du fährst von da aus wieder auf
die Hauptstraße.
Oh man ... ich hoffe ihr lacht mich jetzt wegen der kleinen Erklärung nicht aus

Aber wie du siehst, ist das ganze kein Hexenwerk
Ne Codeinjection ist kein Hexenwerk und eigentlich auch
recht leicht zu verstehen...
[code=asm]
0B30DA80 - mov [esp+20],eax
0B30DA84 - mov ecx,[esp+20]
0B30DA88 - movzx eax,word ptr [esi+00001422] <-- Originalcode
0B30DA8F - mov [esp+2C],ecx
0B30DA93 - movzx ecx,word ptr [esi+000015A6]
[/code]
Der Originalcode ist in diesem Fall eine Funktion, die sich um die Lebensenergie
des Spielers kümmert und die Lebensenergie befindet sich in esi+1422.
Bei einer Codeinjection wird quasi eine Umleitung erschaffen die in einen
freien Speicherbereich führt.
Der Speicherbereich sollte groß genug sein, um darin arbeiten zu können.
Das ganze würde dann so aussehen:
[code=asm]
0B30DA80 - mov [esp+20],eax
0B30DA84 - mov ecx,[esp+20]
0B30DA88 - jmp 400400 <-- Hier ist nun die Umleitung
0B30DA8D - nop
0B30DA8E - nop
0B30DA8F - mov [esp+2C],ecx
0B30DA93 - movzx ecx,word ptr [esi+000015A6]
[/code]
Wird nun diese Codestelle erreicht, so springt das Programm zur Adresse 400400
und dort können wir nun bequem arbeiten.
[code=asm]
00400400 - mov word ptr[esi+00001422],03E7 <-- Unser Befehl
00400409 - movzx eax,word ptr [esi+00001422] <-- Originalcode
00400410 - jmp 0B30DA8D <-- Von der Umleitung wieder zurück
[/code]
Unser Befehl schreibt nun den Wert 999 in die Adresse, die unsere aktuelle Lebensenergie enthält.
Der Originalcode muss auch in der Umleitung auftauchen, da sonst das Spiel
nicht mehr weiter weiß und in den meisten Fällen führt das zum crash.
Damit nun das Progamm/Spiel wie gewohnt weiter im Code machen kann, springen
wir mit jmp 0B30DA8D wieder zurück.
Kleine Erklärung zum besseren Verständnis:
Stell dir den Hauptcode wie eine Hauptstraße vor.
Auf dieser Hauptstraße fährst du mit deinem Auto immer von oben nach unten.
Dein Auto hat immer die gleiche Farbe (weiß).
Da du gerne eine andere Farbe haben möchtest, folgst du einer "Umleitung".
Diese Umleitung führt dich auf eine Nebenstraße auf der sich auch ein Lackierer befindet.
Dieser Lackierer gibt deinem Auto eine neue Farbe und du fährst von da aus wieder auf
die Hauptstraße.
Oh man ... ich hoffe ihr lacht mich jetzt wegen der kleinen Erklärung nicht aus



Aber wie du siehst, ist das ganze kein Hexenwerk

ACHTUNG: Lesen gefährdet die Dummheit
![[Bild: dna-sig.gif]](http://homeofgamehacking.de//images/signatures/dna-sig.gif)