| | Originaltext aus der Dokumentation des Tools EDIT1602 (1998). | | Der wahrscheinlich erste Text, in dem die Codierung des Spielstandsformates COD | behandelt wurde. Der Text beschreibt die Umwandlung der kodierten Daten in lesbare | Textdateien. Leider fehlen Hinweise zur Interpretation der nicht immer trivialen | Rohdaten, die sich nach der Dekodierung ergeben. | | Wieder aufgefunden 2007. | The secret of COD Achtung! Dieser Text ist HEISS !!! In den folgenden Zeilen wird detailliert beschrieben, wie das 1602-Dateiformat zu knacken ist - gnadenlos und ohne Geheimnisse! So mancher Hobby-Programmierer wird sich vielleicht fragen, woher Chris und ich die Daten haben, um ANNO 1602 mit unserem Editor so stark beeinflussen zu können. Die Lösung ist nicht so schwer, wie man vermuten könnte. Das Geheimnis von EDIT 1602 liegt in den Dateien mit der Endung COD, die sich in allen möglichen Verzeichnissen des Spiels befinden. Decodiert man diese Dateien, ergibt sich die Möglichkeit, auf einfachste Weise alle möglichen Spieldaten zu verändern. Die veränderte Datei muß man dann nur noch zurückkodieren, und das Spiel arbeitet fortan mit neuen Einstellungen. Für diejenigen, die es interessiert, gehe ich an dieser Stelle auf die Einzelheiten der Kodierung ein. Wenn jemand Interesse daran hat, kann er die Dateien selbst einmal dekodieren und sie sich genauer ansehen. Das Schreiben eines Dekoders ist relativ einfach, Vorwissen über das Lesen und Schreiben von binären Dateien und Textdateien muß man allerdings schon mitbringen. Bei der Kodierung handelt es sich um eine byte-weise Kodierung, das heißt, man geht in Schritten mit jeweils einem Byte vor, um die Verschlüsselung zu knacken. Die Kodierung selbst beruht auf einer Inverse-Konvertierung, d.h. für jedes Zeichen wird im kodierten Zustand der "Gegenwert" gespeichert. Unter "Gegenwert" versteht man dabei die Zahl, die zusammen mit dem Ausgangswert den maximal in der Variablen speicherbaren Wert ergibt. Bei einem Byte z.B. ist der Maximalwert 255, bei einem Word hingegen beträgt er 65535. Die Funktion zum Errechnen eines Inverse-Wertes bei Bytes sieht also wie folgt aus: Lösungswert = 255 - Ausgangswert. Geht man nach diesem Schema vor, erhält man für den Wert 0 den Wert 255 als Lösungswert. Für die Eingabe von 5 erhält man 255 - 5, also 250, als Rückgabe, und so weiter. Die Kodierung bei ANNO 1602 beinhaltet jedoch einen winzigen Unterschied: Anstatt von 255 als Maximalwert auszugehen, hat MAX DESIGN die Zahl 256 als Maximalwert benutzt (was wahrscheinlich bloß ein Versehen war). Die Funktion zur Dekodierung der ANNO 1602-Bytes lautet daher so: Lösungswert = 256 - Ausgangswert. Klappert man mittels dieser Funktion eine ganze COD-Datei ab, ergibt sich als Ausgabe eine reine Textdatei, die sich mit einem gewöhnlichen Text-Editor anzeigen läßt (am besten mit einem Win-Editor wie Notepad, weil nur dann die Umlaute richtig dargestellt werden). Aber Vorsicht: Beim Abändern von Daten ist dringend darauf zu achten, daß die Groß- und Kleinschreibung beibehalten wird und keine Kommentarzeilen gelöscht werden. Außerdem empfiehlt sich natürlich vor dem Ändern von Einträgen das Anfertigen von Sicherheitskopien! Um die Dateien für ANNO 1602 wieder lesbar zu machen, müssen sie nur noch mit dem gleichen Algorithmus kodiert werden, der auch schon zur Dekodierung verwandt wurde. Enjoy!