Cheat Engine, Metin2: TP Pointer suchen

08/04/2012 14:04 NedFlanders#1
Hallo da draußen! Ich arbeite seit einiger Zeit an einem kleinem Metin2 Hack für den "P-Server" HDMT2. Jetzt bin ich an einem Punkt, an dem ich sogar mit Hilfe nicht weiter komme. Es geht darum den Pointer, der "TP : 100 / 100"-Adresse zu finden.

So bin ich bisher vorgegangen:
1. In Cheat Engine nach dem String "TP :" suchen
2. Pointerscan mit Max Level 3 nach der gefundenen Adresse
3. M2 neustarten
4. Erneut in Cheat Engine nach dem String "TP :" suchen
5. Die neugefundene "TP : 100 / 100"-Adresse im altem Pointerscan suchen: Rescan Memory - Adress to find - OK

Und im neuem Fenster erscheint: Nichts :confused:

Hoffe ihr könnt mir weiterhelfen,
David :D
08/04/2012 17:53 Mi4uric3#2
Versuchs mit dem Memory-Breakpoint (on access) & reverse den Pointer selbst, das geht meist schneller.
Dir ist aber bewusst, dass du TP nicht "hacken" kannst, oder?
Weil du sagtest "Ich arbeite seit einiger Zeit an einem kleinen Metin2 Hack für "P-Server".
08/04/2012 18:03 SmackJew#3
Quote:
Originally Posted by NedFlanders View Post
Hallo da draußen! Ich arbeite seit einiger Zeit an einem kleinem Metin2 Hack für den "P-Server" HDMT2. Jetzt bin ich an einem Punkt, an dem ich sogar mit Hilfe nicht weiter komme. Es geht darum den Pointer, der "TP : 100 / 100"-Adresse zu finden.

So bin ich bisher vorgegangen:
1. In Cheat Engine nach dem String "TP :" suchen
2. Pointerscan mit Max Level 3 nach der gefundenen Adresse
3. M2 neustarten
4. Erneut in Cheat Engine nach dem String "TP :" suchen
5. Die neugefundene "TP : 100 / 100"-Adresse im altem Pointerscan suchen: Rescan Memory - Adress to find - OK

Und im neuem Fenster erscheint: Nichts :confused:

Hoffe ihr könnt mir weiterhelfen,
David :D
Hook' doch einfach einen Code Teil der auf die Adresse zugreift, wenn du sie sowieso kennst.
08/04/2012 20:30 NedFlanders#4
Quote:
Originally Posted by Mi4uric3 View Post
Dir ist aber bewusst, dass du TP nicht "hacken" kannst, oder?
Danke für die Antwort! :)
Ja, mir ist klar, dass ich TP nicht "hacken" kann. Das Programm soll Tränke benutzen, sobald der Charakter wenig Leben hat.


Quote:
Originally Posted by Mi4uric3 View Post
Versuchs mit dem Memory-Breakpoint (on access) & reverse den Pointer selbst, das geht meist schneller.
Quote:
Originally Posted by SmackJew View Post
Hook' doch einfach einen Code Teil der auf die Adresse zugreift, wenn du sie sowieso kennst.
Ok. Vielen Dank. Ich kenn mich mit Detours noch nicht aus, weshalb ich mir jetzt das Video Tutorial vom Mod "MrSm!th" anschaue und auch noch mit einer super Hilfe das ganze versuche. Wenn ihr mir irgendwie helfen könnt, schreibt es einfach.

Liebe Grüße, David :D
08/04/2012 23:56 SmackJew#5
Quote:
Originally Posted by NedFlanders View Post
Danke für die Antwort! :)
Ja, mir ist klar, dass ich TP nicht "hacken" kann. Das Programm soll Tränke benutzen, sobald der Charakter wenig Leben hat.





Ok. Vielen Dank. Ich kenn mich mit Detours noch nicht aus, weshalb ich mir jetzt das Video Tutorial vom Mod "MrSm!th" anschaue und auch noch mit einer super Hilfe das ganze versuche. Wenn ihr mir irgendwie helfen könnt, schreibt es einfach.

Liebe Grüße, David :D

Nun ja, viel gibts da nicht zu helfen, ist eine relativ simple Sache. Wenn du deine Adresse gefunden hast lass dir von CheatEngine zeigen wo auf die Adresse zugegriffen wird, ob Read oder Write Access ist in dem Fall egal. Nehmen wir an CheatEngine zeigt dir etwas in der Richtung:

Code:
0xabcdef         mov dword ptr [esi], 0x12345
0xabcdef + X     <next instruction>
Deine Adresse befindet sich also beim Ausführen der Instruction an 0xabcdef in ESI. Nun reicht es an der nächsten Instruction einen Detour zu platzieren, oder auch ein paar Instructions weiter wenn die Opcodes != 5 sind und du dir das Auspolstern mit NOPs sparen willst, und in deinem Code die Adresse zu speichern:

Code:
DWORD adr = NULL;

__declspec(naked) void foo() {

    __asm {
        mov adr, esi
        //überschriebene Bytes ausführen
        jmp [zurück zur nächsten instruction]
    }
}
Mehr ist es nicht. Wie elegant das ist, darüber kann man sich streiten.
08/05/2012 06:28 Mi4uric3#6
Das war das, was ich mit dem Memory Breakpoint meinte ;)