Angerf1st Geschrieben 9. Juni 2015 Teilen Geschrieben 9. Juni 2015 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 :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 9. Juni 2015 Teilen Geschrieben 9. Juni 2015 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) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mfk'); DROP TABLE Users;-- Geschrieben 9. Juni 2015 Teilen Geschrieben 9. Juni 2015 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Angerf1st Geschrieben 9. Juni 2015 Autor Teilen Geschrieben 9. Juni 2015 (bearbeitet) 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 9. Juni 2015 von Angerf1st Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mfk'); DROP TABLE Users;-- Geschrieben 9. Juni 2015 Teilen Geschrieben 9. Juni 2015 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?Ich verstehe die Frage nicht. Was meinst du mit Model? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Angerf1st Geschrieben 9. Juni 2015 Autor Teilen Geschrieben 9. Juni 2015 Mit Model meinte ich z.B. in einem Spiel die Figur die ich bewegen und die "gegnerischen" player models Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mfk'); DROP TABLE Users;-- Geschrieben 9. Juni 2015 Teilen Geschrieben 9. Juni 2015 Mit Model meinte ich z.B. in einem Spiel die Figur die ich bewegen und die "gegnerischen" player modelsJa, die Daten der 3D-Models liegen (auch) im Speicher des Computers. Was hast du vor, willst du das Aussehen der Figuren verändern? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Angerf1st Geschrieben 10. Juni 2015 Autor Teilen Geschrieben 10. Juni 2015 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mfk'); DROP TABLE Users;-- Geschrieben 10. Juni 2015 Teilen Geschrieben 10. Juni 2015 (bearbeitet) 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 10. Juni 2015 von mfk Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Angerf1st Geschrieben 10. Juni 2015 Autor Teilen Geschrieben 10. Juni 2015 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.