Home of Gamehacking - Archiv
CodeInjection in VB? Wie? - Druckversion

+- Home of Gamehacking - Archiv (http://archiv-homeofgamehacking.de)
+-- Forum: Gamehacking (http://archiv-homeofgamehacking.de/forumdisplay.php?fid=3)
+--- Forum: Gamehacking (http://archiv-homeofgamehacking.de/forumdisplay.php?fid=6)
+--- Thema: CodeInjection in VB? Wie? (/showthread.php?tid=228)

Seiten: 1 2


CodeInjection in VB? Wie? - chesar - 31.01.2011

Ich wünsche mir ein TuT über Code Injecten in Vb.
wenn das einer machen würde, würde ich mich echt freuen.
Da ich leider nichts zum Thema gefunden habe und ich nicht weiter komme.

:heart:


RE: Tutorialwünsche - DNA - 31.01.2011

Da schonmal reingeschaut?
http://homeofgamehacking.de/showthread.php?tid=57
Da wird auch erklärt, wie man mit VB eine CI umsetzt.


RE: Tutorialwünsche - chesar - 31.01.2011

Ja bestimmt schon 20 mal angeguckt, aber ich versteh nicht was du da genau mit tsearch machst.
Ich habe mein Code für die Injektion in CE fertig aber dann......... Huh


RE: Tutorialwünsche - Acubra - 31.01.2011

Hey,
das Prinzip zur Codeinjection ist immer das Gleiche.
Man hat mit einem Debugger eine Stelle im Code des Spiels gefunden und möchte diese nun nach seinen Wünschen verändern.

Hier mal ein einfaches Beispiel:
Wir sehen uns folgenden fiktiven Code an.

Code:
012813D4         A1 00404000              MOV EAX,DWORD PTR DS:[404000]
012813D9         83E8 01                  SUB EAX,1
012813DC         A3 00404000              MOV DWORD PTR DS:[404000],EAX                                   

Wir haben jetzt im Debugger festgestellt, das 404000 unsere aktuelle Munition enthält. Nun sehen wir das der Wert der Ammoadresse nach eax verschoben wird, dann um 1 vermindert wird und dann wieder in die Ammoadresse geschoben wird.
Eine mögliche Codeinjection wäre nun:

Code:
1
2
3
4
5
6
7
012813D4         A1 00404000              MOV EAX,DWORD PTR DS:[404000]
012813D9         83E8 01                  SUB EAX,1
012813DC         E9 23050000              JMP ingameCl.01281904

01281904         B8 99090000              MOV EAX,999
01281909         A3 00404000              MOV DWORD PTR DS:[404000],EAX                                   
0128190E       ^ E9 CEFAFFFF              JMP ingameCl.012813E1


Nun gucken wir uns die Bytes zu den Opcodes an. Diese müssen wir einfach an die richtigen Adressen mit WriteProcessMemory schreiben und schon ist unsere Codeinjection fertig.


RE: Tutorialwünsche - iNvIcTUs oRCuS - 31.01.2011

Kurz und knapp...

Riiichtiiiiig!


RE: Tutorialwünsche - chesar - 01.02.2011

Ich glaub ich bin echt zu doof :dodgy:
mein code in CE sieht z.b. so aus

Zitat:alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)

newmem:
mov dword[eax+04], f423f
//this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
mov [eax+04],edx
pop edi
ret

exit:
jmp returnhere

"BlackOps.exe"+11CF2B:
jmp newmem
returnhere:

und wie soll ich das in VB schreiben?


RE: Tutorialwünsche - iNvIcTUs oRCuS - 01.02.2011

Ganz einfach... Du schreibst nicht das was Du da in dem Script siehst (also die Opcodes), sondern die zugehörigen Bytes als "Array of Bytes". Wie das aussieht wurde hier schon in diversen Tutorials gezeigt.
Bsp.:
Zitat:0137188A - 8B 44 24 04 - mov eax,[esp+04]
0137188E - 8B 00 - mov eax,[eax]

Du schreibst also durch Deinen Trainer nicht explizit "mov eax,[esp+04]" und "mov eax,[eax]", sondern Du schreibst einfach das ganze Array. Also schreibst Du "8B 44 24 04 8B 00". Eingefügt wird das ganze an Adresse 0x137188Ah. Das ist der ganze Zauber...


RE: Tutorialwünsche - chesar - 01.02.2011

Langsam wird das Licht Heller.....

meinst du die Bytes die auf dem Bild zu sehen sind?
oder welchen Bereich meinst du?
Und wie oder was macht DNA in seinem TuT?

[Bild: cutqppg32jwe.png]

:heart:


RE: Tutorialwünsche - iNvIcTUs oRCuS - 01.02.2011

Die Idee seines "TMK to VB Autopatcher Converter" ist die das aus einem TSearch "Poke xxxxxxxxx" ein Visual Basic konformes Format wird. Es entfällt praktisch die Arbeit sämtliche Zeilen Code selbst zu schreiben.

Und genau diese Idee hab ich mit meinem Tool für Delphi verfolgt. Siehe z.b. hier... HEX to Array Convert
Im Endeffekt sind diese Tools nicht zwingend notwendig um einen Trainer zu schreiben. Sie erleichtern nur einem enorm die Arbeit.

Das was Du mit deinem Trainer in einen Prozess schreibst sind die Bytes, bzw. die Zeichenkette die hinter "Poke 'Adresse0815' " steht. Also in deinem Beispiel müsste dein Trainer die Bytes "C7 87 2C 03 00 00 E7 03 00 00 8B" an Adresse 0x11EAEA8h in den Prozess BlackOps.exe einfügen.


RE: Tutorialwünsche - ABartX - 01.02.2011

driften wir hier nicht etwas in's offtopic rein Happy

@ chesar
übrigens dein script oben wird so nicht richtig funktionieren Wink

so schon eher, kleiner aber feiner unterschied:


greetz ABartX