Unbekannte Adressüberschreibung

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Shortyoo
Beiträge: 17
Registriert: Di Feb 17, 2015 9:55 pm

Unbekannte Adressüberschreibung

Beitrag von Shortyoo » Mi Feb 25, 2015 9:00 pm

Abend Community! :D

Hab wieder mal ein kleines Problem, und zwar folgendes:
Ab für ein Singleplayer Spiel (FF VII wem das was sagt) ein Hack gebaut (wenn man das so nennen kann).
Jedenfalls: Wenn ich den Wert "EXP bis zum Nächsten Level" auf Beispielsweise 1, 2 (egal welche Zahl) setze, springt er nach einem Kampf (also während eigentlich die Gewonnene EXP mit der zum Lv Up verbleibenden EXP subtrahiert wird) zu seiner Ursprünglichen Zahl zurück, ohne dass es da eine Verbindung gibt.

Ich arbeite mit Cheat Engine und selbst wenn ich die Option "Find out what writes to that address" wähle, dann zeigt er mir (während / nachdem der Wert geändert wurde" nichts an, meistens ist es sogar so dass das Spiel abstürzt, woran kann das also liegen?
Habe mich vorerst natürlich vergewissert dass die Adresse die ich habe (ja, es ist der Pointer) die einzige Adresse mit diesem Wert ist, woher also nimmt er seinen Ursprünglichen Wert?

Genau das gleiche beim Level, nur da passiert es viel eher:
Ich ändere das Level (ob mit Cheat Engine oder mit meinem Tool), gehe ins Menü und Schwupps: Level zurückgesetzt, die Chars haben ihr ursprüngliches Level wieder.

Ich hoffe ihr versteht mein Problem und könnt mir irgendwie helfen? :D


Mit freundlichen Grüßen,

Shortyoo

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Unbekannte Adressüberschreibung

Beitrag von cloidnerux » Mi Feb 25, 2015 10:55 pm

Ich hoffe ihr versteht mein Problem und könnt mir irgendwie helfen? :D
Du verstehst/kennst dynamische Speicherverwaltung nicht.
Dein Spiel instantiiert ein neues Objekt, fragt dafür das System nach Speicher(Ram), in dem es dieses Objekt speichern kann. Das Level wird beendet, das Objekt wird gelöscht, daher der Speicher wird frei, natürlich werden die Entscheidenden Informationen ausgetauscht.
Nachdem das Objekt gelöscht wurde, wird der Speicherbereich als "frei" markiert. Deine "cheat engine" hat aber zwischenzeitlich die Adresse deiner Variablen gefunden und schreibt darauf.
Nachdem das Objekt gelöscht wurde, hört es aber nicht auf zu schreiben.
Jetzt da das Objekt weg ist und der Speicher "frei" erkennt dein Betriebssystem, dass das Spiel an eine ungültige Adresse schreiben will und erzeugt einen Fehler und dein Spiel stürzt ab.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Shortyoo
Beiträge: 17
Registriert: Di Feb 17, 2015 9:55 pm

Re: Unbekannte Adressüberschreibung

Beitrag von Shortyoo » Do Feb 26, 2015 7:48 pm

Okay, danke für die verständliche Erklärung! :D

Aber wie kann es sein dass Cheats bei anderen Spielen funktionieren, und gerade bei dem nicht?
Irgendwie muss ich den Wert dieses dynamischen Speichers (bzw. des dynamischen Datentyps) ändern können, oder nicht?

Antworten