Cracking Tuturial by WKz_Daedalus

Hallo, das ist mein erstes Tuturial. Ich habe es auf Deutsch geschrieben, 
weil ich meine das es viel zu wenig Deutsche Tuturialz gibt.
Als ich vor knapp 1 Jahr angefangen gabe gab es fast nur englisch Tuturialz.
euch solls jetz besser gehn. 

Was wollen wir cracken ?

Ich habe mich fr Deus Ex entschieden, weil der Copy-Lock mit das Primitivste ist was es gibt und 
weil Deus Ex ein echt geiles Game ist, in den man meinen Namens-Vetter trifft.

Was brauchen wir ?

- Windasm 8.93
- einen Hexeditor ( ich bevorzuge HIEW 6.16 )
- denn Kram kriegste bei www.Crackstore.com
- Deus Ex
- Assembler-Kenntnisse wren nicht schlecht

Los gehst :

Zuerst mal installierst du Deus Ex voll, nimmst die CD raus und startest.
Was, Deus Ex hat doch tatschlich die Frechheit eine CD zu verlangen ?
Merk dir die Meldung und ffne DeuxEx.exe mit Windasm.
Klick auf Strn Ref in der Symbolleiste und such nach der Meldung.
Entgegen aller Erwartungen steht dieser Ref nicht drin.
Scrolle die Liste weiter und suche nach auffligen Dingen.
Irgendwann msste da sowas wie "InsertCdText" stehen.
Klick drauf und schon landest du mitten im schnsten Assembler-Wirrwarr :

* Possible StringData Ref from Data Obj ->"InsertCdTitle"		' bergibt Titel fr die MessageBoxW
                                  |
:1090BA0B 68A0D59210              push 1092D5A0

* Reference To: Core.?LocalizeGeneral@@YAPBGPBDPBG1@Z, Ord:03EAh	' bersetzt Titel fr die MessageBoxW
                                  |
:1090BA10 FF15607B9510            Call dword ptr [10957B60]
:1090BA16 83C40C                  add esp, 0000000C
:1090BA19 89851CF9FFFF            mov dword ptr [ebp+FFFFF91C], eax
:1090BA1F 6A00                    push 00000000

* Possible StringData Ref from Data Obj ->"Window"
                                  |
:1090BA21 6828CE9210              push 1092CE28

* Possible StringData Ref from Data Obj ->"InsertCdText"		' bergibt Text fr die MessageBoxW
                                  |
:1090BA26 6890D59210              push 1092D590

* Reference To: Core.?LocalizeGeneral@@YAPBGPBDPBG1@Z, Ord:03EAh	' bersetzt Titel fr die MessageBoxW
                                  |
:1090BA2B FF15607B9510            Call dword ptr [10957B60]
:1090BA31 83C40C                  add esp, 0000000C
:1090BA34 898518F9FFFF            mov dword ptr [ebp+FFFFF918], eax
:1090BA3A 6801200500              push 00052001
:1090BA3F 8B851CF9FFFF            mov eax, dword ptr [ebp+FFFFF91C]
:1090BA45 50                      push eax
:1090BA46 8B8D18F9FFFF            mov ecx, dword ptr [ebp+FFFFF918]
:1090BA4C 51                      push ecx
:1090BA4D 6A00                    push 00000000

* Reference To: USER32.MessageBoxW, Ord:01C3h				' Callt eine MessageBoxW <--- hier wirds interresant 
                                  |
:1090BA4F FF15C07F9510            Call dword ptr [10957FC0]
:1090BA55 83F802                  cmp eax, 00000002			' checkt ob "Wiederholen" gewhlt wurde
:1090BA58 7514                    jne 1090BA6E				' wenn Wieder holen gewhlt wurde jumpt er...  >| 
															|
* Reference To: Core.?GIsCriticalError@@3HA, Ord:02DCh									|	
                                  |											|	
:1090BA5A 8B15347C9510            mov edx, dword ptr [10957C34]								|
:1090BA60 C70201000000            mov dword ptr [edx], 00000001        							|
:1090BA66 6A00                    push 00000000									        |
														        |
* Reference To: KERNEL32.ExitProcess, Ord:007Dh									        |		
                                  |										        |
:1090BA68 FF15BC7D9510            Call dword ptr [10957DBC]	         'sonst wird Deus Ex hier beendet	        |
															|
* Referenced by a (U)nconditional or (C)onditional Jump at Address:							|
|:1090BA58(C)														|
|									  'hierhin 					|	
:1090BA6E E946FFFFFF              jmp 1090B9B9		              <-------------------------------------------------|	

Wir knnen mal ganz stark davon ausgehen das Deus Ex wenn wir auf wiederholen geklickt haben wieder zum Anfang der Routine jumpt
Also fhre denn letzen Jump mit "Jump to" aus 
Du msstest hier raus kommen :

* Reference To: Core.?GIsEditor@@3HA, Ord:02DDh
                                  |
:1090B9B9 8B0D047C9510            mov ecx, dword ptr [10957C04]
:1090B9BF 833900                  cmp dword ptr [ecx], 00000000		' Checkt irgendwas
:1090B9C2 0F85AB000000            jne 1090BA73				' wichtiger Jump ! >----------------------------|
:1090B9C8 8D8DA4FCFFFF            lea ecx, dword ptr [ebp+FFFFFCA4]							|
															|
* Reference To: Core.??DFString@@QBEPBGXZ, Ord:01B8h									|
                                  |											|
:1090B9CE FF15DC7B9510            Call dword ptr [10957BDC]							        |
:1090B9D4 898524F9FFFF            mov dword ptr [ebp+FFFFF924], eax							|					      
:1090B9DA 8B9524F9FFFF            mov edx, dword ptr [ebp+FFFFF924]							|
:1090B9E0 52                      push edx										|
:1090B9E1 A1547C9510              mov eax, dword ptr [10957C54]								|
:1090B9E6 8B08                    mov ecx, dword ptr [eax]								|
															|
* Reference To: Core.?GFileManager@@3PAVFFileManager@@A, Ord:02D7h	' Hat irgendwas mit dem Dateisystem zu tun      |
                                  |											|
:1090B9E8 8B15547C9510            mov edx, dword ptr [10957C54]								|							
:1090B9EE 8B02                    mov eax, dword ptr [edx]								|
:1090B9F0 8B10                    mov edx, dword ptr [eax]								|
:1090B9F2 FF5208                  call [edx+08]										|
:1090B9F5 898520F9FFFF            mov dword ptr [ebp+FFFFF920], eax							|	
:1090B9FB 83BD20F9FFFF00          cmp dword ptr [ebp+FFFFF920], 00000000						|
:1090BA02 7F6F                    jg 1090BA73				' Einer der mglichen Punkte fr den Crack >----|	
:1090BA04 6A00                    push 00000000										|
															|
* Possible StringData Ref from Data Obj ->"Window"									|
                                  |											|
:1090BA06 6828CE9210              push 1092CE28										|
															|
....															|
															|
:1090BA6E E946FFFFFF              jmp 1090B9B9				' Der Jump von vorhin				|
															|
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:							|
|:1090B9C2(C), :1090BA02(C)												|
|															|
:1090BA73 C645FC31                mov [ebp-04], 31									|
:1090BA77 8D8DA4FCFFFF            lea ecx, dword ptr [ebp+FFFFFCA4]   <-------------------------------------------------|			

Also wenn einer der Jumps bei 1090B9C2 oder 1090BA02 ausgefhrt wird, jumpt das Prog direkt hinter die MessageBox.
Klick auf einen der beiden Jumps ( hier reicht es einen zu cracken ) und lies den Offset in der Statusleiste ab.
Du msstest B9C2 bzw. BA02 rauskriegen ( h wird weggelassen , das steht blo fr Hexadezimal ).
Nun kannst du Windasm schlieen und Hiew starten.
Du msstest jetzt ein ziemliches Wirrwarr sehen ( noch schlimmer als Assembler ) ,also drck F4 und whl "decode" an.
Nun msstest du wieder meinen geliebten Assembler Code sehen.
Drck F5 und gib einen Offset ein.
Wenn du denn ersten gewhlt hast sieht du am oberen Rand jetzt die Zeichenfolge "0F85AB000000" 
Das heit so viel wie wenn beim vorhergehenden Compare nicht gleiches rauskommt, starte Spiel
Der Compare checkt ob die CD nicht vorhanden ist ,der jne = Jump if not equal ( = springe wenn falsch ) kehrt das ganze um. 
		
also : wenn CD nicht nicht vorhanden , starte Spiel   

Da hier fr das jne die lange Umschreibung ( 0F85 ) gewhlt wurde und es keinen 4-teiligen Code fr einen direkten Jump gibt,
mssen wir den Jump negieren, was dazu fhrt das man Deus Ex nicht spielen kann, wenn die CD drin ist.

Gehe mit den Cursor unter die 85 ,drck F3 und nder 85 in 84.
Jetzt msste da je stehen.
Speichere jetzt deine Arbeit mit F9.

So und jetzt zu den mglichen Crack-Punkt ( eigentlich reicht ja einer, aber du willst ja sicherlich was lernen...) .
Ich wrde diesen Jump bevorzugen, da hier blo 7F6F steht, die Jump-Condition also blo 2-stellig.
Hier knnen wir den Jump so ndern das er immer jumpt:
ndere 7F zu EB, was soviel wie Jump directly to bedeutet.
Nachdem du die nderung gepeichert hast kannst du Deus Ex zum Test mal starten.

Kleiner Tip am Rande:
whrend du im Edit-Modus bist, kannst du F2 drcken und den Assembler Befehl eingeben.
Die wichtigsten sind :

Hex:            Assemler:        Bedeutung:

75 oder 0F85    jne              jump if not equal
74 oder 0F84    je               jump if equal
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
EB              jmp oder jmps    jump directly to
84              test             test
90              nop              no operation

		
		by WKz_Daedalus 
		
		www.geocities.com/winkillerz
		WKz_Daedalus@gmx.net

Greetz :
		Alle WKz Memberz ( vorallen matrix )
		r!sc
		Black Check
		sn00pee
		gonzo 
		xcrk
		Laxity
		Duellist
		ByteBurn
















