Jump to content

Empfohlene Beiträge

Hallo zusammen,

ich beschäftige mich momentan mit Reverse Engineering von Spielen und Programmierung von Add-ons, Helfern (z.B. gegner sichtbar machen usw.).

Immer öfter lese ich den begriff "Nach einem Update ändern sich die offets".

Ich habe offsets so verstanden das es auf die Adresse Anfangs und Endadresse des Spiels zeigt bzw auf den adresseraum im ram in denen das spiel liegt. Stimmt das so? Denn mich verwirrt die tatsache das die offsets dann immer fest adressen im speicher zugewiesen bekommen. D.h. im RAM müsste ja genau das Spiel immer diese Adresse frei sein oder?

Was genau bewirken diese Offets?

Danke für eure hilfe :-)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ein Offset ist wie der Name schon sagt einfach ein Abstand. Z.B. der Abstand von einer Speicheradresse zu der Position wo bestimmte Daten liegen.

Z.B. hier

char *test = "Hello World";
printf("%s\n", test + 6);[/PHP]

Beginnt das Wort World beim Offset 6

PS: wenn ein Zeichen nicht genau 1 Byte groß wäre müsste man die Zeichenlänge natürlich bei der Berechnung des Offsets berücksichtigen. Also z.B. test + 6 * sizeof(char)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ein Offset ist nur eine Zahl, die "bewirkt" gar nichts.

Bestimmte Zustandswerte eines Programms werden an bestimmten Stellen im Speicher abgelegt. Diese Stellen sind niemals "fest" im Sinne einer Adresse im physischen RAM. Aber sie lassen sich wiederfinden, z.B. relativ zur Basisadresse eines Moduls im virtuellen Speicher. Und dieser relative Versatz (Offset auf deutsch) ändert sich gerne mal, wenn das Programm geändert wird, z.B. weil sich durch zusätzliche Variablen das Speicherlayout ändert.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

D.h. ein für mein Model(in game) müsste ich die Basis Offsets des Spiels suchen.

Dort sollten dann irgendwo meine Daten für das model liegen bzw die offsets des models?

(sorry ein "dümmeres" beispiel ist mir gerade nicht eingefallen :old)

bearbeitet von Angerf1st

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Das Aussehen nicht. Ich bin gerade dabei einen einfachen wallhack zu schreiben sprich die ich lege ein Overlay auf die player models damit ich sie von überall sehen kann z.B. auch durch wände. (Hab mir das einfach mal als c++ übung rausgenommen ;-)).

Wenn ich das mit offsets jetzt richtig verstanden habe gibt es eine Adress Range in der die Daten für das player model stehen und das sind dann meine offsets?

Ich habe jetzt z.B. in meinem Buch folgenden Satz: "Dieser Code lädt die Adresse des Thread Information Block (TIB), der immer an Offset 0x18 vom FS-Register liegt."

Verstehe ich das richtig das in meinem Basisadress raum im virutellespeicher immer an der Adresse 0x18 steht?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Ich bin gerade dabei einen einfachen wallhack zu schreiben sprich die ich lege ein Overlay auf die player models damit ich sie von überall sehen kann z.B. auch durch wände. (Hab mir das einfach mal als c++ übung rausgenommen ;-)).
Das ist nach meiner Einschätzung vier bis fünf Nummern zu groß für dich.

Für das beschrieben Vorhaben bringt es dir nichts, wenn du weißt, wo die Daten des Models liegen. Eine Änderung dieser Daten hat nicht den beschriebenen Effekt. Weißt du, wie 3D-Computergrafik in etwa funktioniert?

Verstehe ich das richtig das in meinem Basisadress raum im virutellespeicher immer an der Adresse 0x18 steht?
Nein. Was du da schreibst, ergibt gar keinen Sinn.

Da steht über ein Stück Code, dass es die Adresse des TIB lädt, unter Ausnutzung der Tatsache, dass der TIB gegenüber FS immer den Offset 24 hat.

bearbeitet von mfk

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

ERrtmal danke für die Antworten.

Da kann ich dir nur zustimmen es ist schon ein großer schön großer Brocken aber es macht spaß sich damit zu beschäftigen.

Momentan beschäftige ich mich mit der Quake Engine.

Habe dir mal eine PM geschrieben :).

Wenn noch jmd anderen den thread liest feel free to answer ;)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden


×