24.06.2013, 17:12
(Dieser Beitrag wurde zuletzt bearbeitet: 24.06.2013, 17:15 von iNvIcTUs oRCuS.)
Wenn Du dir sämtliche Opcodes auflisten lässt die die Spieleradresse manipulieren/auslesen dann kommst du irgendwann zu so einem Codestück...
[code=ASM]ret 000C
xorps xmm0,xmm0
xor eax,eax
comiss xmm0,[ecx+10]
jb FC3.dll+905E4E[/code]Die Spieler- und Gegneradressen werden bei "comiss xmm0,[ecx+10]" durchlaufen.
Setze also einen Breakpoint auf diese Zeile und gehe zurück ins Spiel. Da die Health permanent durchlaufen wird und nicht nur wenn die Spielfigur getroffen wird müsste der Debugger sofort anspringen und an eben jenem Breakpoint das Spiel angehalten haben...
Da sich der oben gezeigte Code selbst innerhalb eines Call's (Subroutine) befindet muss also irgendwo am Ende dieser Funktion ein Return stehen. Also stepst du durch den Code und mit dem Ausführen des Return's kommst du aus diesem Call raus. Wenn Du dann eine Zeile oben drüber schaust siehst Du den Call der diese Funktion aufgerufen hat.
Die Funktion, welche das oben gezeigte Codeschnipsel inne hat, wird allerdings von mehreren Stellen aufgerufen. Deshalb wirst Du das wahrscheinlich mehrmals wiederholen müssen bis du einen solchen Code siehst...
[code=ASM]mov ecx,[esi+2C]
mov eax,[ecx]
call dword ptr [eax+1C][/code]Dieser "call dword ptr [eax+1C]" wird nur aufgerufen wenn es sich um eine Spieleradresse handelt. Also könntest du hier deine Codeinjection machen...
EDIT//
Aber wie ich schon sagte... Die Spielfigur wird dadurch unverwundbar, aber durch Stürze aus großer Höhe nimmt diese dennoch Schaden bzw. verliert die Health komplett...
[code=ASM]ret 000C
xorps xmm0,xmm0
xor eax,eax
comiss xmm0,[ecx+10]
jb FC3.dll+905E4E[/code]Die Spieler- und Gegneradressen werden bei "comiss xmm0,[ecx+10]" durchlaufen.
Setze also einen Breakpoint auf diese Zeile und gehe zurück ins Spiel. Da die Health permanent durchlaufen wird und nicht nur wenn die Spielfigur getroffen wird müsste der Debugger sofort anspringen und an eben jenem Breakpoint das Spiel angehalten haben...
Da sich der oben gezeigte Code selbst innerhalb eines Call's (Subroutine) befindet muss also irgendwo am Ende dieser Funktion ein Return stehen. Also stepst du durch den Code und mit dem Ausführen des Return's kommst du aus diesem Call raus. Wenn Du dann eine Zeile oben drüber schaust siehst Du den Call der diese Funktion aufgerufen hat.
Die Funktion, welche das oben gezeigte Codeschnipsel inne hat, wird allerdings von mehreren Stellen aufgerufen. Deshalb wirst Du das wahrscheinlich mehrmals wiederholen müssen bis du einen solchen Code siehst...
[code=ASM]mov ecx,[esi+2C]
mov eax,[ecx]
call dword ptr [eax+1C][/code]Dieser "call dword ptr [eax+1C]" wird nur aufgerufen wenn es sich um eine Spieleradresse handelt. Also könntest du hier deine Codeinjection machen...
EDIT//
Aber wie ich schon sagte... Die Spielfigur wird dadurch unverwundbar, aber durch Stürze aus großer Höhe nimmt diese dennoch Schaden bzw. verliert die Health komplett...
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...