Hey,
wenn es soetwas wie eine Entity-Liste gibt dann muss es einen Speicherbereich mit den ganzen Pointern zu den jeweiligen Adressen der Spieler geben. Wie du schon richtig im Nachtrag 4 gesagt hast, müsstest du dann zum ersten Pointer (der auf die BaseAdresse des ersten Spielers zeigt) höchstwahrscheinlich 0x4*i hinzuaddieren um den Pointer des Spielers mit dem Index "i" zu erhalten. 0x4 musst du hinzuaddieren, da ja ein Pointer (DWORD) 4 bytes groß ist. Die 0x4 können aber von Spiel zu Spiel auch unterschiedlich sein, je nachdem ob der Pointer noch mit anderen Informationen in einer Struktur steht oder nicht.
Zu deinem ersten Nachtrag: Du solltest nicht gucken was in die Adresse schreibt (writes), sondern was auf sie zugreift (accesses), damit du die Adressen nicht erst hast wenn dem Gegner HP abgezogen wurde. Das in C++ ist über eine DLL Injektion sehr einfach zu realisieren. Du überschreibt des Befehl der die HP abzieht mit einem Sprung (Jump) zu deiner eigenen Funktion. Dort steht bei dir folgender (pseudo) code:
wenn es soetwas wie eine Entity-Liste gibt dann muss es einen Speicherbereich mit den ganzen Pointern zu den jeweiligen Adressen der Spieler geben. Wie du schon richtig im Nachtrag 4 gesagt hast, müsstest du dann zum ersten Pointer (der auf die BaseAdresse des ersten Spielers zeigt) höchstwahrscheinlich 0x4*i hinzuaddieren um den Pointer des Spielers mit dem Index "i" zu erhalten. 0x4 musst du hinzuaddieren, da ja ein Pointer (DWORD) 4 bytes groß ist. Die 0x4 können aber von Spiel zu Spiel auch unterschiedlich sein, je nachdem ob der Pointer noch mit anderen Informationen in einer Struktur steht oder nicht.
Zu deinem ersten Nachtrag: Du solltest nicht gucken was in die Adresse schreibt (writes), sondern was auf sie zugreift (accesses), damit du die Adressen nicht erst hast wenn dem Gegner HP abgezogen wurde. Das in C++ ist über eine DLL Injektion sehr einfach zu realisieren. Du überschreibt des Befehl der die HP abzieht mit einem Sprung (Jump) zu deiner eigenen Funktion. Dort steht bei dir folgender (pseudo) code:
Code:
1 |
|
Dafür braucht man noch lange keinen Debugger.
PS: Habe gelesen das der Sourcecode des Spiels frei verfügbar ist? Eventuell wäre der Spielcode einen Blick wert.
//EDiT: Da haben wir es doch schon: https://github.com/assaultcube/AC/blob/d...ntgame.cpp
Code:
1 |
|
"Auf dieser Welt gibt es mehr Scheisse als auf Festivalklos"
![[Bild: hoglogo_smalpxga.jpg]](http://h-2.abload.de/img/hoglogo_smalpxga.jpg)