von Dark_Lord » Mo 10. Jan 2022, 20:00
Wenn das Spiel das selbst rückgängig macht, ist es noch an anderer Stelle gespeichert.
Letztlich ist es ja so. Du willst einen Punktestand, z.B. Geld, ändern. Der beträgt beispielsweise bei der letzten Speicherung 43981. In Hexadezimal ist das AB CD. Zu beachten ist da aber ggf. die Intel Byteorder (Little Endian, niederwertigstes Byte zuerst gespeichert), die evtl. heißen kann, dass in der Datei nach CD AB zu suchen ist.
Um herauszufinden, ob der Punktestand an der richtigen Stelle ist, kannst zu z.B. bei 43981 nach AB CD und nach CD AB suchen. Dann spielst du weiter, bis du 44033 Punkt hast, was AC 01 - oder im Falle von Little Endian Speicherfolge 01 AC entspricht und guckst, ob das an der Stelle auch so steht. Umrechnen kannst du zwischen Dezimal und Hex mit dem Windows-Taschenrechner im Programmier-Modus.
Was auch noch zu prüfen wäre, ist, ob es eine Prüfsumme gibt. Prüfsummen basieren auf Aufaddieren mit Überlauf (8 Bit Prüfsumme z.B. 253 + 5 = 2 - also 253->254->255->0(256)->1->2 und die Prüfsumme zu diesen zwei Bytes wäre 254 weil 254+2=0 wegen 254->255->0(256)) und wenn man alle Bytes oder Wörter (von 2 oder 4 Bytes, also 16 oder 32 Bit) aufaddiert, kommt am Ende 0 raus. Wenn ein moderner Hex-Editor wie HxD beim 8, 16 und 32 Bit Prüfsummenverfahren nicht auf 0 kommt, ist wahrscheinlich, dass eine solche Prüfsumme nicht vorliegt. Spieleprogrammierer geben sich die Mühe vermutlich nicht, ein XT-BIOS hat eine Checksum8, also eine 1 Byte / 8 Bit Prüfsumme, die genau wie in dem Beispiel berechnet wird.
Erfolgschancen sind unterschiedlich, man muss sich halt ein wenig einarbeiten. Aber du wirst merken, es ist keine Rakenwissenschaft.
Wenn das Spiel das selbst rückgängig macht, ist es noch an anderer Stelle gespeichert.
Letztlich ist es ja so. Du willst einen Punktestand, z.B. Geld, ändern. Der beträgt beispielsweise bei der letzten Speicherung 43981. In Hexadezimal ist das AB CD. Zu beachten ist da aber ggf. die Intel Byteorder (Little Endian, niederwertigstes Byte zuerst gespeichert), die evtl. heißen kann, dass in der Datei nach CD AB zu suchen ist.
Um herauszufinden, ob der Punktestand an der richtigen Stelle ist, kannst zu z.B. bei 43981 nach AB CD und nach CD AB suchen. Dann spielst du weiter, bis du 44033 Punkt hast, was AC 01 - oder im Falle von Little Endian Speicherfolge 01 AC entspricht und guckst, ob das an der Stelle auch so steht. Umrechnen kannst du zwischen Dezimal und Hex mit dem Windows-Taschenrechner im Programmier-Modus.
Was auch noch zu prüfen wäre, ist, ob es eine Prüfsumme gibt. Prüfsummen basieren auf Aufaddieren mit Überlauf (8 Bit Prüfsumme z.B. 253 + 5 = 2 - also 253->254->255->0(256)->1->2 und die Prüfsumme zu diesen zwei Bytes wäre 254 weil 254+2=0 wegen 254->255->0(256)) und wenn man alle Bytes oder Wörter (von 2 oder 4 Bytes, also 16 oder 32 Bit) aufaddiert, kommt am Ende 0 raus. Wenn ein moderner Hex-Editor wie HxD beim 8, 16 und 32 Bit Prüfsummenverfahren nicht auf 0 kommt, ist wahrscheinlich, dass eine solche Prüfsumme nicht vorliegt. Spieleprogrammierer geben sich die Mühe vermutlich nicht, ein XT-BIOS hat eine Checksum8, also eine 1 Byte / 8 Bit Prüfsumme, die genau wie in dem Beispiel berechnet wird.
Erfolgschancen sind unterschiedlich, man muss sich halt ein wenig einarbeiten. Aber du wirst merken, es ist keine Rakenwissenschaft.