SearchForCheats.de.vu » Tutorials » Hacking Lesson #5: AR - Komplizierte Notwendigkeit


Hacking Lesson #5: AR - Komplizierte Notwendigkeit

Willkommen zurück, an alle die noch dabei sind! Was steht heute auf der Tagesordnung?

  1. Wir lernen ein neues Code-Format kennen
  2. Wir gehen nochmal ganz ruhig die ganze Praxis durch, indem wir einen Code erstellen

Okaaay. Um dem Ganzen noch einen leicht seltsam angehauchten Stich zu geben, fange ich jetzt nicht mit TOP 2 (Fällt auf, dass wir in der Schule zurzeit Protokolle schreiben? ;-) ) an. Wir arbeiten mit dem VBA 1.7.2, einer möglichst ungepatchten Smaragd-Read-Only-Memory (ROM) und unserem bisher erworbenem Wissen. Außerdem benötigen wir den Anti-Data-Moving-Application-Code. (Den Anti-DMA ^^)
Zuallererst ladet ihr eure Smaragd (Die Deutsche Edition) im Visual Boy Advance. Und dann fangen die Probleme auch schon an. Ich beabsichtige keinen dieser langweiligen Standardcodes zu machen, sondern wir versuchen heute mal was Interessanteres: Den „Überall Hinfliegen“-Code *gewinnend lächelt*
Da wir für den „Überall Hinfliegen“-Code die Fähigkeit Fliegen benötigen, sollten wir einen Spielstand haben, wo dies schon möglich ist. Wenn ihr noch nicht soweit gespielt haben solltet, gebe ich hier mal schnell einen Crashkurs in Sachen Spielstandverwaltung.

  • Zuerst braut ihr das Savegame. Ich habe jetzt einfach mal ein Passendes aus der Savegamesammlung von pokemonexperte.de genommen. Dank an die Pokemonexperte.de-User Rekkuzza, ders soweit gespielt hat und glumada, fürs Hosten. POKEMONRSpeicher966701.xps(64 KB)
  • Nachdem wir das geschafft haben, müssen wir die Datei noch geringfügig abändern. Alle Windows 2000-User müssen noch unter Explorer > Extras > Ordneroptionen > Ansicht > Häkchen bei "Dateinamenendung bei bekannten Dateien ausblenden" das Häkchen entfernen. (Bild gibts hier) Alle Windows XP-User entfernen das Häkchen unter Systemsteuerung > Ordneroptionen > Ansicht > "Dateinamenendung bei bekannten Dateien ausblenden". (@ alle Win98-User: Ihr habt das Glück, dass man Anno 1998 noch so vernünftig war und eine der größten Trojaner Möglichkeiten noch nicht kannte: Das Ausblenden von Dateinamenerweiterungen. Hier muss nichts umgestellt werden. Ihr rockt! ^^) Danach benennt ihr euren gerade aus dem Internet geladenen Save um. Wichtig ist dabei, dass die Datei später die Endung *.sps erhält. Den Spielstand von oben wördet ihr also in "POKEMONESpeicher-816700.sps" umbenennen.
  • Jetzt wechselt ihr in den Visual Boy Advance (mit geladenem Spiel!) und klickt auf "File" > "Import" > "Gameshark Snapshot". Dort wählt ihr dann euer eben umbenanntes File aus. Der VBA fragt noch kurz nach Bestätigung. Klickt auf "ja" und ladet das Spiel "ingame". Fertig.

Jetzt müssen wir den Anti-DMA anschalten. Für die Deutsche Smaragd habe ich zufälligerweise Einen parat. ^^

Anti-DMA
D8BAE4D9 4864DCE5
DD5F41DA 90B02762

Aktiviert diesen unter "Cheats" > "Cheat list..." > "Gameshark" im unteren Feld. Gut so. Let’s get hacking!

Am Anfang eines Codes steht immer die Idee und die Überlegung nach der Ausführung. "Wenn wir einen Code machen wollen, mit dem wir überall hinfliegen können, dann müssen wir also die Adresse im Speicher finden, die angibt, ob wir an einen Ort fliegen können oder nicht. Um diese Adresse zu finden, müssen wir den dort gespeicherten Wert variieren." Wir müssen uns also überlegen, wo denn der Wert zwischen "Kann Fliegen" und "Kann NICHT Fliegen" verändert wird. Na?
GENAU! Im Stadt-Flug-Anwahl-Bildschirm! Sehr gut! ^^
Wir suchen uns also ein Pokemon, das Fliegen kann und gehen in den Auswahlbildschirm. Der Cursor (Das kleine Viereck) wird dabei ersteinmal auf einer Stelle platziert, an die wir nicht fliegen können. (Bild) Drückt jetzt [STRG + C] um die Cheatsuche zu aktivieren. Benutzt folgende Angaben:

Einstellungen

Wir vermuten, dass der Pointer, der angibt, ob wir fliegen können oder nicht, ein 8-Bit-Value ist. Theoretisch müsste er eigentlich nur 0 und 1 lauten, Für Fliegen und nicht Fliegen. Vielleicht...
Außerdem suchen wir standardmäßig im Hexadecimal-Mode und haben "Update Values" aktiviert (nicht nötig, erhöht aber die Übersicht). Wir suchen zunächst Equal einem unbekanntem Wert.
Klickt auf "Start" und auf "Search" und bekommt euer erstes Problem. Ein Fenster sollte erscheinen:



OH MEIN GOTT!!! ALLES IST KAPUTT!!! [...] *hyperventilier*
Naja... So schlimm isses nicht. Da wir ja alle des Englischen mächtig sind, übersetzen wir mal: "Die Suche lieferte 294912 Treffer. Bitte besser eingrenzen." Okay. Da steht also nur, dass wir noch zu viele Ergebnisse und Möglichkeiten für ein Offset, das unseren Kriterien entspricht, gefunden haben. Na gut. Wechseln wir doch mal zurück ins Spiel und verändern unseren Wert. Wir setzen den Cursor auf irgendeine Stadt, zu der wir fliegen können.



Zurück ins Cheat-Suche-Menü und dort überlegen wir nochmal genau. Wir haben also jetzt das Offset geändert, das wir finden wollen. Gut. Ergo setzen wir jetzt von "Equal" auf "Not Equal" unserem vorherigem Wert, da wir ja jetzt Fliegen KÖNNTEN. Einen beherzten Klick auf "Search" später bekommen wir wohl wieder mitgeteilt, dass immernoch zu viele Möglichkeiten offen sind. (bei mir sind es jetzt allerdings nurnoch 3806) Das kann bei euch anders sein, muss aber nicht. Selbst wenn die Fehlermeldung nicht erscheint, und ihr schon wenig genug Offsets gefunden habt, ignoriert dies bitte erstmal und schließt die Suchfunktion mittels "OK".
Im Spiel sollten wir jetzt etwas Besonderes machen. Wir könnten natürlich einfach den Cursor wieder auf einer Stelle platzieren, zu der wir nicht fliegen können. Ich aber würde euch raten, den Cursor auf eine andere Stadt zu stellen. Warum? Ganz einfach! Weil wir jetzt nach "Equal" suchen können, und das bedeutet, dass die ganzen im RAM befindlichen Werte, die sich immerzu ändern (beispielsweise die Zeit) nichtmehr in Frage kommen und das Treffergebiet etwas eingeschränkt wird. Also... Auf eine andere Stadt.



Oder sollte ich sagen Dorf? ^^ Wunderbar... Suchfunze, wir kommen! Dieses Mal suchen wir nach "Equal" und klicken zur Abwechslung mal auf "Search". Hey! Das Fenster kommt nichtmehr! (Hoffentlich... Wenn doch, dann ist es auchnicht so schlimm...) Ich hab jetzt zum Beispiel nurnoch 252 mögliche Ergebnisse und das ist schonmal sehr gut. Natürlich wäre es ärgerlich, wenn man noch alle 252 Stück ausprobieren müsste, also positionieren wir jetzt den Cursor wieder im Nirvana.



Zurück in der Suche suchen wir wieder "Not Equal" weil wir ja jetzt nichtmehr Fliegen können. *klick* Wäh... Nicht viel besser geworden. Ich habe jetzt noch 199 mögliche Ergebnisse. Wie ärgerlich. Also müssen wir jetzt in den saueren Apfel beißen und anfangen uns die Ergebnisse näher anzuschauen. Generell ist hierbei zu sagen, dass man immer erstmal den RAM mit 0x02 beginnend probieren sollte, niemals mit dem RAM anfangen, dessen Adresse mit 0x03 beginnt. Außerdem sollte vielleicht eine Art Pointer wirklich das „1-Und-0-Schema“ erfüllen. Es kommen für uns also auch ersteinmal primär die Werte in Frage, die jetzt bei „nicht fliegen“ auf „0“ stehen. Wenn ich mir jetzt meine Ergebnisse durchschaue und beachte, dass die ersten beiden Ziffern der Adresse 02 sind und dass der Wert der selbigen Adresse jetzt 0x0 (0x steht für Hex... do you remember?) beträgt, bleibt bei mir nur ein Ergebnis über:

0x0200001a

Das sollten wir doch mal überprüfen. Klickt auf "Tools" > "Memory Viewer". Gebt dort dann eure gerade gefundene Adresse ein und klickt auf "Go".
Jetzt schauen wir uns mal an, wie sich der Wert zum Spiel verhält. (Der Haken bei "Automatic Update" im Mem-Viewer muss gesetzt sein!) Die folgenden Bilder sagen viel, denke ich.




Wir befinden uns auf einem Stück, das außerhalb der Karte liegt, und zu dem wir nicht fliegen können. Der Wert ist, wie wir vermutet haben 0.




Jetzt sind wir innerhalb der Karte, können aber nochnicht fliegen. Der Wert ist 1, und dahinter wurden anscheinend ein paar Koordinaten gesetzt.




Jetzt können wir fliegen. Der Wert ist 2. Sehr gut!
Wir schreiben also an die Adresse den Wert 2 und sorgen so dafür, dass das Spiel denkt, wir könnten immer fliegen.
Den zugehörigen VBA-Code macht jetzt bitte ihr. Angaben dafür sind bekannt, nälich die Folgenden:

8-Bit-Constant-Write
XXXXXXXX:YY

16-Bit-Constant-Write
XXXXXXXX:YYYY

32-Bit-Constant-Write
XXXXXXXX:YYYYYYYY

Für Lösung markieren: (0200001A:02)

Gebt den Code ein im Cheatmenü unter "Code" und freut euch über die Wirkung. Das Problem ist, dass wir jetzt allerdings auch an Orte fliegen können, für die es garkeine Maps gibt. Wenn man das versucht stürzt die ROM oder der Gameboy ab. Dies werden wir in einer späteren Stunde noch beheben.
Jetzt wird’s richtig interessant. Wir werden einen AR-Code machen. Dazu benötigt ihr eigentlich nur ARCrypt und euren VBA-Format-Code für „Überall Hinfliegen“. Das Format für AR ist Folgendes:

8-Bit-Constant-Write
XXXXXXXX YYYYYYYY

16-Bit-Constant-Write
XXXXXXXX YYYYYYYY

32-Bit-Constant-Write
XXXXXXXX YYYYYYYY

X = Erstes Verschlüsseltes Hex-Word
Y = Zweites Verschlüsseltes Hex-Word

Na ganz toll. Wir müssen also was verschlüsseln. Und genau dazu benutzen wir ARCrypt. (Das war das Teil, das ich in der ersten Stunde als Hausaufgabe zu suchen gegeben habe, erinnert ihr euch?) Euer ARCrypt sollte (in etwa) so aussehen:


Handzuhaben ist das Ding ganz einfach. Merkt euch einfach "Links rein Rechts raus" ;-) Zuerst nehmen wir also unseren Code (0200001A:02) und kopieren ihn in die linke Seite von ARCrypt. Das war auch schon der einfache Teil. Jetzt muss die zweite mit der dritten Zahl ausgetauscht werden. Jetzt steht also links: (0020001A:02)
Anschließend müssen wir dem AR mitteilen, welche Art von Code wir hier haben. Dazu müssen jetzt die vordersten beiden Ziffern mit 0x00 überschrieben werden. Glücklicherweise steht auf den ersten beiden Positionen bereits ein 00, also müssen wir hier garnichts machen.
Warum 00? 00 Gibt an, dass es sich bei unserem Code um einen 8-Bit-Constant-Write handelt. 02 steht für 16-Bit und 04 für 32-Bit ; Dazu aber zu einem späteren Zeitpunkt mehr.
Jetzt müssen wir noch den Wert mit so vielen Nullen auffüllen, dass für den Wert insgesamt 8 Stellen stehen. Danach müsst ihr noch den Doppelpunkt entfernen. Wie sieht der Code jetzt aus?
Für Lösung markieren: (0020001A 00000002)
Schön. Jetzt noch ein kurzer beherzter Klick auf „Proceed“ (achtet darauf, dass links "RAW" und rechts "ARV3" markiert ist) und schwuuups! Rechts steht der fertige AR-Code.
Für Lösung markieren: (E33E8523 CC325F6D)

Fertig! Fix und Fertig! Die nächste Hacking Lesson wird kommen...
Viel Spaß beim Ausprobieren. ;-)

"Pokémon" ist ein eingetragenes Warenzeichen der Firma Nintendo
"Action Replay" ist ein eingetragenes Warenzeichen von Datel Interact.
© www.SearchForCheats.de.vu by Mastermind_X
© 2006 - 2008