Digital Cracker Domain presentz:

[DCD]-Tutorial #3: Mortyr

(C) 1999 by BasTardT[DCD]


Zutaten:
Mortyr
einen HEX-Editor (ich nehme WinHex, Seriennummer: Code 1: 49725  Code 2: 35780
W32Dasm 8.9(3)

Hi Leude!
Nachdem ich so viele eMail bekommen habe, wird es wohl mal wieder Zeit fr ein
Tutorial. Dieses mal habe ich ein Spiel ausgesucht, damit ihr seht, dass das Cracken
von Spielen noch einfacher ist als bei Anwendungen...

Ich werde in meinem 3. Tutorial sicher nicht wieder erklren, dass die Taschenlampe
bei WinDasm fr Suchen steht, ich setze also Grundkenntnisse aus Tutorial #1 vorraus
(besser ist es, wenn ihr sowohl Tutorial #1 als auch Tutorial #2 gelesen habt...)

Wir machen also wie immer eine Kopie von der EXE, in diesem Fall die mortyr.exe und
jagen die Kopie durch WinDasm.

Nchster Schritt (wie immer): Fehlermeldung suchen.
Das geht wie immer ganz einfach: CD aus dem Laufwerk, Spiel starten und auf ein lustiges
Fenster warten. Mortyr gibt nach 3 nervigen Videos die Meldung "Mortyr CD not found" mit
dem Titel "Data file error..." aus. Wir suchen also bei WinDasm die ersten paar Zeichen der
Fehlermeldung, im Suchenfenster geben wir also "Mortyr CD" ein. Als erstes findet WinDasm
die Mendeklaration dieser Fehlermeldung - in unserem Fall vllig uninteressant. Wir suchen
weiter. DA! Genau DIE Meldung, die wir gesucht haben. Der Text bei WinDasm sieht etwa so 
aus:

:00485178 81F99A020000		cmp ecx, 0000029A
:0048517E 740D			je 004851D

* Possible StringData Ref from Data Obj ->"Mortyr CD not found."

:00485180 68D86A4A00		push 004A6AD8
:00485185 E8A600F8FF		call 00405230
:0048518A 83C404			add esp, 00000004

Wir suchen - wie immer (man sieht, es ist bei jedem Crack fast gleich) - nach der Adresse
00485180 nach oben und nach unten, um festzustellen, ob diese Adresse nur direkt von oben
oder auch von woanders her aufgerufen werden kann. Leider (oder zum Glck?!?) schlgt die
Suche fehl - wir wissen jetzt also, dass die Fehlermeldung von "oben" aufgerufen wird, also in
der Zeile darber - das Programm "berrennt" sie einfach. (Mein $$%$ Mathelehrer wrde
jetzt sagen "Des is dea Durchfetzer".) FUCK OF MATHS!!!

Direkt darber steht ja "je 004851D", "je" steht immer noch fr "jump if equal", also "springe
wenn gleich". Aha! Mortyr springt also zur Adresse 004851D, wenn irgendetwas gleich irgend-
etwas anderes ist - z.B. wenn "CD im Laufwerk" gleich "ja" ist (naja, etwas anders ist es schon...)

Zack zack Hex-Editor ber die Mortyr.exe laufen lassen, Offset auslesen (steht immer noch in
der StatusBar von WinDasm), welcher in unserem Fall 8517E ist (die Nuller vorne und das "h"
hinten weglassen). Wir machen also aus "je" "jne" (= jump if not equal), in dem wir an der Offset-
adresse mit Hilfe des HEX-Editors aus "74" "75" machen (andere HEX-Werte siehe unten!)

Wir starten das Spiel und YEPP!!! es geht auch ohne CD!!! Wer sich jetzt fragt "ja wie jetzt???", weil
das Spiel in einem komischen Grafikmodus luft, leidet unter dem selben Problem wie ich (ein
Freund von mir aber nicht..., ich denke, dass es an Voodoo2 liegt), startet das Spiel einfach ber
das Setup, dann geht es.

Ach ja: wer das geschaft hat, ist noch kein Meistercracker!!!!!!!!!!!

Wenn ihr noch ein Tutorial wollt, schreibt mir doch einfach: bastardt@gmx.net


-=BasTardT[DCD]=- 1999

Special thanx to tKC!

PS: Andere HEX-Werte, Jumps und deren Erklrungen (Raubkopiert aus tKC's Tutor #1):
______________________________________________________________________
Hex:          Asm:      Means:
75 or 0F85    jne       jump if not equal
74 or 0F84    je        jump if equal
EB            jmp       jump directly to
90            nop       no operation
77 or 0F87    ja        jump if above
0F86          jna       jump if not above
0F83          jae       jump if above or equal
0F82          jnae      jump if not above or equal
0F82          jb        jump if below
0F83          jnb       jump if not below
0F86          jbe       jump if below or equal
0F87          jnbe      jump if not below or equal
0F8F          jg        jump if greater
0F8E          jng       jump if not greater
0F8D          jge       jump if greater or equal
0F8C          jnge      jump if not greater or equal
0F8C          jl        jump if less
0F8D          jnl       jump if not less
0F8E          jle       jump if less or equal
0F8F          jnle      jump if not less or equal