savegame <---> hex editor

cr4wler

Admiral Special
Mitglied seit
02.09.2003
Beiträge
1.630
Renomée
5
hallo!
wusste net wo's hinsollte, hier passts aber am wohl meisten...

zu meinem problem:

ich wollte ein savegame von einem spiel editieren, und habe den wert "10000" gesucht...
10000 dec = 2710 hex
alles klar.... nach 2710 gesucht: nix gefunden :-(

gut, änderst halt den wert im spiel, und guckst wo sich was ändert...
voila! eine stelle gefunden an der sich was ändert und das tolle:

an der stelle steht (beim wert 10000) statt 2710, 1027....
gedacht, ok... kann dir ja egal sein... probierst halt mal ffff aus, oder sowas...
----> "Fehler beim Laden"

und das kommt bei ALLEM was ich einsetze...

wenn ich den wert im spiel z.b. auf 3260 verändere (0cbc hex, also bc0c savegame)
und dann im savegame wieder auf 1027 sg (savegame) (also im Spiel 10000) ändere,
kommt wieder der fehler beim laden...

generell, bei jeder änderung eines der beiden betroffenen bytes kann das savegame nicht mehr geladen werden...
weiß jemand rat? (und warum wird der wert im savegame "falschrum" geschrieben?!)
thx
cya
 
So hab ich auch mal angefangen... hach, das waren noch Zeiten *inErinnerungenschwelg*

Also erstmal ist x86 eine little Endian Architektur, das bedeutet, dass die niederwertigen Bytes zuerst kommen. Und demnach ist es auch 1027h - bzw. da es sicherlich als long int gespeichert wird 10h 27h 00h 00h.

Früher hat sich da wohl keiner drum geschehrt, da wurden die Geldwerte etc. noch einfach so in den Savegames abgespeichert. Es ist technisch aber kein Problem das so zu verstecken, dass man so einfach nicht drankommt - man könnte zB. einfach 12345-Geldwert speichern.

Dafür gibts aber natürlich auch Möglichkeiten. Nimm einfach ein Savegame, gib ein bisschen Geld aus (verändere dabei so wenig wie möglich) und speicher das nochmal - dann gehst du mit einem Prog drüber, das Unterschiede erkennt und ausgibt. Ich hab damals GPP genommen, glaub das steht für Games Power Pro. Da ist auch ein brauchbarer Hexeditor dabei.


Am einfachsten ist es inzwischen wenn du mit einem Prog wie Memhack nach den Speicherwerten suchst und einfach einen kleinen Trainer zu erstellst.
 
was das long betrifft hast du recht...
aber weil das ganze "falschrum" war, war ich mir auch nicht sicher, ob die 4 nullen davor oder dahinter noch dazu gehört haben ^^
aber wie gesagt:
wenn ich z.b. aus A410 (hab im spiel geld ausgegeben, und dann noch 4260 gehabt)
A510 mache (also 4261) dann kann er das savegame nicht mehr laden...
exakt HIER liegt mein problem...

und hieran (a410 ----> 10a4) sieht man dass wohl doch nicht die niederwertigen bytes zuerst kommen....
ich gebe nur wieder was diese datei hergibt :-(
die stelle ist aber DEFINITIV richtig... soll heissen wenn ich geld ausgebe/kriege enstprechen diese bytes rückwarts gelesen IMMER dem geldbetrag im spiel...
 
Hab ich vergessen vorhin zu erwähnen, man kann auch einfach eine Checksum reinsetzen die auskunft gibt, ob der Spielstand verändert wurde.

Heute kann man über die Savegames eigentlich nicht mehr viel gewinnen. Sehr oft hat man aber mit Zugriff auf den Speicher erfolg, was eben in einem Trainer resultiert. Ein gutes Tool dazu ist wie gesagt Memhack.
 
problem: das ganze is das "savegame" einer "memorycard" eines "playstation emulators" ;-)
dass es da ne checksumme gibt, sowas hab ich mir schon überlegt, aber gedacht dass es eher unwahrscheinlich wäre...
oder war das bei der playstation, vllt. auch insbesondere bei gran turismo üblich? ;-)
 
Na da wirst du wohl nicht viel machen können... ein weiterer Vorteil vom Rechner ;D.
 
Zurück
Oben Unten