(Spiele-)Dateien mit Hex Editor bearbeiten, wie (zum Teufel) finde ich heraus, welche Werte für was stehen?

2 Antworten

  1. Du spürst die Konfigurationsdatei auf. Liegt meistens im Ordner %appdata% (dafür ist der gedacht) und hat meist einen aussagekräftigen Namen bzw. einen Namen der drauf hindeutet. Evtl hast du schon mit der selben Engine gearbeitet und weißt wie und wo die Datei liegt/heißt
  2. Du machst eine Kopie der Datei
  3. Du startest das Spiel, änderst die Auflösung (oder irgend eine andere Konfiguration).
  4. Du vergleichst die Kopie mit der aktuellen (in HxD: Strg+K, 2. Datei wählen und dann mit F6 durchnavigieren)

Dadurch findest du die Unterschiede und hast einen starken Hinweis darauf was die Bytes wohl bedeuten. Die Bytes können Flags sein (haben dann typischerweise Werte 2^x) oder Unicode-Bedeutung (also Text) oder auch Zahlendatentypen (float, integer). In letzterem Fall würden jeweils 2 oder 4 Bytes zusammengehören und die Zahl ergeben. Wenn man sich etwas mit Programmierung auskennt kann man das (leichter) erkennen.

Als nächstes musst du nur noch mit den Werten herumspielen: Du editierst Werte von denen du die Bedeutung X vermutest zu einem noch höheren (oder anderen Wert), speicherst, startest das Spiel und schaust was passiert bzw. ob deine Vermutung bestätigt wurde. Mehr ist es nicht.

Analog funktioniert das mit dem Herausfinden von Cheatcodes für Trainerprogramme/Hacks/Emulatoren, nur dass hier nicht eine Konfigurationsdatei untersucht wird sondern die Werte im RAM. Es werden gezielt Werte geändert (und möglichst nur die) und dann geschaut was sich im RAM getan hat und schon kann mans eingrenzen. Solange bis man die Position(en) eindeutig festgestellt hat. Dann schreibt man ein Programm was die Werte an genau den Positionen nach eigenen Wünschen ändert (oder ständig auf den selben Wert setzt) und schon hat man "Press L to Levitate", 99 Leben oder ist unverwundbar im Spiel

sotnu 
Fragesteller
 27.05.2016, 15:03

Danke für die Antwort, wie immer super ultra top! :)

Ach so, in den appdata Ordner zu schauen, ist mir noch nicht in den Sinn gekommen. Habe bis jetzt immer im Programmordner oder unter Dokumente nachgeschaut. Vlt. finde ich da ja eine.

Und das mit dem ändern ist natürlich auch eine gute Idee, muss mich dann nur noch ein bisschen da einlesen, damit ich weiss, was was bedeutet (oder könnte).

Das mit den Cheats ist auch mal interessant zu wissen, aber dann zu viel für mich im momment und ich cheate ja sowieso nicht :)

Rückfrage:

Aber hast du eine Idee, wie ich z.B die Sichtweite in einem Spiel erhöhen kann, wenn ich im Spiel die Sichtweite nicht regulieren kann ? Bzw. wie ich den Wert finden kann? Jetzt mal angenommen, ich finde keine Kofigurationsdatei (wie es in meinem Fall der Fall ist, auch nicht bei AppData, Dokumente, im Programm Ordner oder ProgrammData).

Aber gut, jetzt habe ich schonmal bei 95% aller Fälle ne gute Chanche ein bisschen selbst herum zu spielen zu können :) Sichern tue ich immer. Ich habe ein extra Ordner für Saves und originale Spieledateien auf C:

0
FaronWeissAlles  27.05.2016, 16:11
@sotnu

Eine Konfigurationsdatei ist nur die Auslagerung von beliebigen Einstellungen auf die Festplatte. Zum zentralen/einfachen späteren Anpassen von Dingen oder zum Persistent machen von Nutzerpräferenzen. Oder beides. Das bedeutet nicht dass der Entwickler jede denkbare Einstellung auch auslagern muss. Wenn er Einstellungen hat die er nicht vor sieht änderbar zu sein braucht er sie ja nicht extra abspeichern, dann kann er sie auch gleich in das Spiel hardcoden. Das könnte bei deinem Spiel durchaus der Fall sein, vor allem wenn es gar keine Konfigurationsdatei hat. Dann wäre alles unveränderbarer Teil des Programms.

Durch Dekompilieren des Spiels kann man sich mehr oder weniger den Code anschauen und evtl. sehen wo in deinem Fall die Sichtweite geregelt wird. Ohne den originalen Quellcode wirst du aber die Anwendung nicht Neukompilieren können, sodass du da nichts ändern kannst. Dann bleibt höchstens noch die RAM-Methode (während der Ausführung die Information im RAM verändern) bzw. generell Verfahren wie DLL-Injection.

Hat das Spiel einen Kopierschutz wird das alles noch mal extrem erschwert und auch die rechtliche Situation ist so eine Sache... Allein das Dekompilieren von Anwendungen ist in den meisten Fällen bereits untersagt

1
sotnu 
Fragesteller
 28.05.2016, 12:03
@FaronWeissAlles

Wahrscheinlich liegt es daran, dass es ein Port von einem älteren PS3 Spiel ist. Aber das mit dem Dekompilieren und die RAM Methode übersteigt mein Wissen/Können im Moment, aber es ist trotzdem gut zu wissen, dass es sie gibt.

Danke nochmals für die Antwort.

0

Bevor du generelle Änderungen an  Dateien vornimmst ,solltest du  IMMER eine Sicherungskopie der Datei anlegen BEVOR du Änderungen vornimmst.

Sollte mal was nicht wie gewohnt funktionieren kannst so immer die Datei zurückschreiben und so den zustand wieder erreichen BEVOR du Änderungen vorgenommen hast. 

Ist nur ein Tip am Rande.

Die Werte selbst lassen sich nicht selbst bestimmen da jeder Spielehersteller seine eigenen Variablen nimmt und auch so eine eignen Werte selbst definiert. Da Durch zusteigen ,da solltest schon der Programmierer des Spieles sein damit du wenigstens Weißt was für was steht. 

sotnu 
Fragesteller
 28.05.2016, 12:04

Gibt aber dennoch einige Möglichkeiten, einige Werte herauszufinden oder auszuloten, wie Faron ja erklärt hat :)

Und ja, ich lege immer zuerst eine Kopie an, bevor ich was verändere.

0
Silberfan  28.05.2016, 20:28
@sotnu

Man kann vieles ob das das gewünschte liefert steht auf einem anderen Blatt Papier.

0
sotnu 
Fragesteller
 29.05.2016, 10:59
@Silberfan

Ja, welcher Wert jetzt was erhöht, muss man herausfinden, aber immerhin habe ich eine Möglichkeit. Ich muss dass ja nur einmal machen und dann einfach nihct vergessen bzw. speichern.

0