Viny's Cracking Tutor #1
__________________________

Wie crackt man den CD-CHECK von Mana - Der Weg der Schwarzen Macht ?
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nun, genau damit wollen wir uns jetzt mal beschftigen.

Dazu braucht ihr :

1. Den Disassembler (Ich benutze W32DASM 8.9)
2. Einen HexEditor
3. Eine Kopie von Mana (wre nicht schlecht !)

Ausserdem solltet ihr ein wenig ahnung im umgang mit einem HexEditor haben.
---------------------------------------------------------------------------

So, dann wolle mer ma !

Zuerst starten wir mal Mana mit der Kopie im CD-Laufwerk.
Und was sehe ich da, eine Fehlermeldung die sagt, CD NICHT ERKANNT/VORHANDEN!.

Naja, kein Problem.
Zuerst kopiert die CHAOS.EXE in CHAOSBAK.EXE um.
Jetzt ffnen wir die CHAOSBAK.EXE mit W32DASM 8.9.
Nach einiger Zeit ist die EXE endlich disassembliert.
Jetzt drcken wir CTRL+L. Jetzt sehen wir zwei neue Fenster. In dem Fenster rechts unten drcken
wir AUTOSTEP OVER. Jetzt wird die CHAOSBAK.EXE schrittweise debuggt.
Nach einiger Zeit kommt wieder diese dmliche Fehlermeldung.
Wir schauen in das rechte Fenster und sehen dort Assembler Code stehen.
Der blaue Balken sollte bei folgender Zeile stehen

:0057E773 call CHAOS.004D9BF0

Jetzt drcken wir im rechten unteren Fenster TERMINATE und bei der Nachfrage auf JA klicken.

Jetzt sind wir wieder im Quellcode. Der farbige Balken sollte jetzt auf folgender Zeile stehen :
:004DA10E  6A00	push 00000000

Der fr uns wichtige Quellcode ist jetzt der hier:

* Reference To: USER32.MessageBoxA, Ord:01BEh      ----> Hier wird die Fehlermeldung aufgerufen
|
:004DA108 FF15B8315A00   	Call dword ptr [005A31B8]
:004DA10E 6A00                  push 00000000
:004DA110 8BF0                  mov esi, eax
:004DA112 FFD5                  call ebp
:004DA114 83FE04                cmp esi, 00000004		
:004DA117 7526                  jne 004DA13F		
:004DA119 A1B4316300            mov eax, dword ptr [006331B4]
:004DA11E B9E8446300            mov ecx, 006344E8
:004DA123 50                    push eax

* Possible StringData Ref from Data Obj ->".\"
                                  |
:004DA124 685CE15B00              push 005BE15C
:004DA129 E8921CFAFF              call 0047BDC0
:004DA12E 84C0                    test al, al		--> Vergleich
:004DA130 74C5                    je 004DA0F7		--> Wieder die MessageBox aufrufen.
:004DA132 EB04                    jmp 004DA138		--> Springt weiter ins Spiel

Die vorletzte zeile ist nochmal interessant. Wenn der vergleich (TEST AL,AL) stimmt,
dann spring wieder zur Fehlermeldung. Da dieser Vergleich aber hinter dem
aufruf der MessageBox ist, wird das wohl der Button RETRY sein. Denn
wenn der Vergleich nicht stimmt, dann gehts weiter ins spiel.

Hier sind wir also zu spt. Gehen wir ein paar zeilen hoch.
Jetzt sehen wir das :

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004DA130(C)      				   ----> Jump von der Adresse :004DA130
|					           ----> diese adresse ist aber der retry-button,
						   ----> also weiter suchen.
:004DA0F7 6A01                    	push 00000001
:004DA0F9 FFD5                    	call ebp
:004DA0FB 6832200400         		push 00042032
:004DA100 53                      	push ebx
:004DA101 8B542418                	mov edx, dword ptr [esp+18]
:004DA105 52                      	push edx
:004DA106 6A00                    	push 00000000

Hier sind wir also zu spt. Gehen wir ein paar zeilen hoch.
Jetzt sehen wir das :

* Reference To: USER32.ShowCursor, Ord:0266h
                                  |
:004DA0ED 8B2DC0315A00            mov ebp, dword ptr [005A31C0]
:004DA0F3 84C0                    test al, al
:004DA0F5 753D                    jne 004DA134                  ---> Da isser

In der vorletzten zeile wird wieder verglichen. Und wenn der vergleich stimmt, dann
geht er weiter zu Fehlermeldung.
Diesen Jump in der letzten Zeile mssen wir also so umbiegen, das er weiter springt.
Kein Problem !

Also doppelklicken wir jetzt die Zeile : :004DA0F5 753D          jne 004DA134

und sehen und in der Statuszeile bei @Offset die Offset Adresse, die sollte   DA0F5   sein.

Also HexEditor ffnen und CHAOS.EXE ffnen.
Geh zu der Offset Adresse DA0F5.
Dort steht jetzt 75. Das ndern wir in EB.

Jetzt noch schnell speichern und Mana starten und siehe da,
die Fehlermeldung ist weg. Du soeben MANA gecrackt !! WOW !

Diese Variante klappt bei ziemlich vielen Spielen, wie z.B. Bundesliga 99.
Aber troztdem kannst du jetzt nicht von dir erwarten, sofort ein Meistercracker zu sein.
Das kommt nach einiger Zeit von ganz allein. Man muss nur ben !!!


Deine Meinung, Kritik oder Anregung an: viny666@gmx.net


____________________________________
Die wichtigsten Jump-Befehle sind :
(Es gibt noch viel mehr, die braucht man am anfang allerdings nicht)

ASM   HEX             FUNKTION
------------------------------------------
jne = 75 oder 0F85  = spring wenn ungleich
je  = 74 oder 0F84  = spring wenn gleich
jmp = EB            = spring direkt
nop = 90            = nichts wird gemacht