Anleitung um die RPG_RT.exe zu modifizieren:
Wie entferne ich die 3 Startlogos der RPG_RT.exe?
1. Benötigte Tools:
- Hex Workshop (Ziel speichern unter)
- W32Dasm (Ziel speichern unter)
2.
Als erstes fertigen wir eine Kopie der RPG_RT.exe an die wir modifzieren wollen. Wir nennen sie RPG-BU.exe. Danach starten wir das Programm W32Dasm und gehen im Menü auf Disassembler -> Open File to Disassemble..
Dort wählen wir die Datei RPG-BU.exe. Jetzt habt ein moment Geduld, das Programm W32Dasm wandelt nämlich den Code der zu modifizierenden Exe in Assemblersprache um (kurz ASM).
Wenn das Programm fertig ist sieht ihr eine Unmenge von Zeilen die wir aber im wesentlichen nicht brauchen. In diesen Zeilen stehen die Adressen und der ASM Code dazu. Jetzt klicken wir auf den "Strg Refs" Button rechts oben, links neben dem Drucker Symbol. Das ganze geht auch übers
Menü unter Refs - String Data References.
Jetzt erscheint ein Fenster mit allen Strings die der Programmierer verwendet hat. Also scrollen wir mal doch ein bisschen durch bis zum Buchstaben "L". Da kommt dann "Logo1", "Logo2", "Logo3"! Genau das was wir suchen. Ok klickt also auf Logo1 doppelt. Jetzt kann das Extra-Fenster wieder geschlossen werden.
http://mitglied.lycos.de/obercoolmasta/sc/c1.JPG
Im Fenster mit den ASM Befehlen wurde jetzt eine bestimmte Stelle angesprungen. Und zwar "mov ecx" usw. also der Move (Bewege) Befehl. Diesen brauchen wir aber nicht. Also gehen wir mal mit den Pfeiltasten weiter nach oben bis zu den Satz * Referenced by a (U)ncoditional or (C)orditional Jump at Adress: <- Die Adresse die sich darunter befindet brauchen wir.
http://mitglied.lycos.de/obercoolmasta/sc/c3.JPG
-> |: 0046E039 ist die Adresse. Gut wir gehen im Menü unter Goto -> Goto Code Location, geben 0046E039 ein und drücken Enter.
Das ist nun wichtig. Hier steht "jne 0046E031". "Jne" bedeutet soviel wie "Jump if not equal". Also was liegt nun näher, als das ganze in ein "je" sprich "Jump if equal" umzuwandeln. Zuvor musst du aber folgendes wissen:
JNE hat die Zahl 75 oder 85
JE hat die Zahl 74 oder 84
Daraus folgt: 75 in 74 umschreiben und umgekehrt, 85 in 84 umschreiben und umgekehrt. Aber wie ändern wir das jetzt? Schaut doch mal unten in die Statusleiste. Da steht @Offset 0006D439h in File "...". Diesen Offset (ohne das "h" am Ende merken wir uns jetzt)
http://mitglied.lycos.de/obercoolmasta/sc/c4.JPG
Jetzt öffenen wir den Hex Workshop und öffen die RPG_RT.exe.
Danach gehen wir im Menü unter Edit -> Goto (Strg + G)
Da geben wir folgendes ein:
- den Offset: 0006D439
- Hex
- Beginnig of File
Und wir kommen genau auf die Zahl 75 links im Hex-Fenster. Da ich es schon ausprobiert hat, hilft dieser Schalter nichts um die Logos auszuschalten. Was machen wir nun? Verzweifelt im Disassembler den richtigen String dazu zu finden, oder einfach nach 74/75 (die Hauptschalter) bei der RPG_RT.exe)
ausschau zu halten. Natürlich zweiteres. Ok weiter gehts nach Oben mit dem Suchen im Hex-Fenster, weil darunter werden schon die Logos angezeigt. Und was findet man?
Hex 74 6B makiert diese Zahlen mal, dann sieht ihr rechts die Buchstaben tk markiert. Ja und was muss man mit der 74 machen? Richtig! In 75 umschreiben.
Das ganze dann speichern. Bei der Frage ob sie ein Backup des Programmes machen wollen schlicht - NEIN. Weil wir fertig sind :D
http://mitglied.lycos.de/obercoolmasta/sc/c5.JPG
So jetzt startet die RPG_RT.exe mal - was keine Logos? Wow ich bin Gott ich habe die Logos rausgemacht mit einen übelsten Aufwand, nein wir haben jediglich nur eine Zahl umgeschrieben und das ist ein Witz nicht?
Für die Zukunft:
Am besten ihr geht mal im Hexeditor auf Suche und gibt bei "Text-String" das Wort "Logo" ein. Jetzt findet ihr die ideale Stelle zum schalten von 74 <> 75 :D. Danach speichern und die RPG_RT.exe ausführen. Wenn sich was verändert hat super, wenn nicht wieder umschreiben ;D
Gruß Davis
Schwieriger als ich dachte...
ist das Laden.
Denn mein Programm muss quasi auch noch auslesen, ob Save-Dateien vorhanden sind, wenn ja eine Variable wieder mithilfe des Speichers ändern, abfragen usw..
Aber es klappt, sofern ich es schaffe ein Jumper für die Adresse im Memory zu finden der permanent und nicht temporär ist.
Gruß Davis
Tutorial, das Beweist wie es mit dem Ladescreen geht:
1. Programme die benötigt werden:
- WinHex (Ziel Speichern unter)
- Mein Startmenü Projekt
*Wichtig, tut in mein Projekt irgendeine "Save11.lsd" Datei rein,
sonst lässt sich das Lademenü nicht öffnen!*
2. Startet die RPG_RT.exe
Danach drückt F4 (Fenster verkleinern) und öffnet WinHex
Beim Start Center auf "Open RAM" klicken.
Dort sucht ihr im "Edit Virtual Memory" Fenster den Eintrag
"RPG_RT" und drückt aufs +. Dort wählt ihr Primary Memory aus
und klickt auf ok.
Jetzt kommt wieder son Hexshit ich weiß ich weiß... lasst
euch nicht entmutigen und klickt aufs Fernglas (Suchen)
Da sucht ihr einfach mal "Logo"
Jetzt müsste das so in etwa dastehen: (rechts)
LOGO1 (§/blabla
LOGO2 /bla
LOGO3
so dort sucht ihr in Richtung nach Oben den Buchstaben "u".
Wenn ihr Richtig seid steht sowas wie "~. . u . º" da...
Das "u" ersetzt ihr einfach mit einem "t". Also kickt aufs "u" und drückt ein
"t", aber das Kleine! Jetzt aufs Diskettensymbol klicken (speichern)
Danach gehts wieder zurück zum Spiel. Dort einfach F12 drücken und
Überraschen lassen.
War das jetzt schwer? Nein!
P.S: Um wieder ins normale Menü zukommen, das gleiche, nur das "t" in
ein "u" umschreiben.
Oder im Hexcode 75 zu 74 und 74 wieder in 75.
Gruß Davis
P.S: Das Umzusetzen ist schwieriger, denn die Adresse zum Schalter verändert sich immer, also ist temporär normalerweise -_. Hoffentlich finde ich ein permanenten Jumper zur Speicheradresse des schalters.