In der Montage können Sie die ESP (stack pointer) and EIP (instruction pointer) Register direkt lesen. Sie haben die Adresse an den Anfang des Stapels bzw. die aktuelle Anweisung. Von dort können Sie den Speicher, der Stapel und Anweisungen direkt lesen.
In diesem Video überholten sie die Level-Daten und das Spiel begann die Stack-Daten als Level-Daten zu interpretieren. Er schreibt dann in einen Offset im Stapel, indem er Bausteine bricht, die den Speicher für die nächste Ebene enthalten.
Da es immer dieselben Bausteine mit denselben Daten sind, bedeutet das, dass das Speicherlayout sehr deterministisch ist, was für ein altes Kartuschensystem, bei dem nichts anderes auf dem Prozessor läuft, keine Überraschung ist. Sie könnten die Daten direkt schreiben, wenn Sie Zugriff auf die Konsole hatten und den Offset kennen.
Nur ein paar Gedanken ... Sie können Stack Smashing versuchen. Oder Sie können ein 1 Byte Shared Memory-Segment an Ihr Prozessabbild anhängen und versuchen, über seine Größe hinaus zu lesen. –
Das Lesen von Ebenen aus dem Programmspeicher und das Lesen zufälliger Positionen im Programmspeicher ist nicht dasselbe. Der erste ist vollkommen legal, während der zweite ein undefiniertes Verhalten ist. – dasblinkenlight
@dasblinkenlight, in Assembly ist es eigentlich egal, mit welchen Registersätzen man arbeitet. Sie müssen sicherlich viel mit dem Stack-Pointer lesen und interagieren, um etwas Interessantes in der Assembly zu tun. Und die Baugruppe ist der Befehlsspeicher. Natürlich ist das Lesen eines anderen Prozessspeichers immer schlecht und etwas Verrücktes zu tun, wie das Schreiben in den Stack- oder Instruktionsspeicher wird fast immer etwas zum Absturz bringen. – Iverelo