
Servas mal wieder. 
Da ich endviele mails gekricht hab von leuten die mein erstes turorial net gecheckt haben hab ich mir gedacht schreib ich mal eins fr
beginning beginners. Also fr die die berhaupt keine Ahnung haben. Denn ich hatte am anfang auch probleme cracken zu lernen weil mir die
ganzen tutors zu hoch waren, und noch dazu auf englisch. Deshalb also dieses tutor, ich hoffe es bringt euch was.
Noch n kleiner tip: Lest das tutor von snoopee (www.crackstore.com). Das hat mir geholfen.
Wie in jedem tutor bitte ich rechtschraibfehla zu verzeihen. Das schreiben is schon genug arbeit.

Nun ist die frage was wir cracken. Am besten ein game das jeder hat. Und das net zu schwer ist. 
Da mir nix einfllt nehm ich einfach Need for speed 3. 

Ihr braucht:

1. Windasm 8.9      
2. Hiew 6.x         
3. Need for speed 3
4. zeit um das alles zu lesen und zu verstehen.

Hiew und Windasm gibts bei www.crackstore.com
Also, es gibt zwei (mir bekannte) mglichkeiten etwas in eine Form zu bringen das man etwas anders sehen kann als irgendwelche zeichen wenn man es mit notepad oder mit nem Hexeditorffnet. Das nennt man disassemblieren. und dafr gibt es windasm. 
Die andere Mglichkeit ist Softice, aber das lass ich hier raus da es eher fr apps ist (serials rausfischen und so).
Also Windasm disassembliert eine Datei, das heisst es zeigt den ungefhren quelltext. (Fehlermeldungen und so)
Dann gibt es wieder 2 mglichkeiten etwas was man vorher disassembliert hat zu verndern. 
Dazu muss man natrlich wissen was und um das rauszufinden is eben windasm da. Doch windasm kann nix verndern sondern nur anzeigen.
1. gibt es hiew. hiew zeigt alles so an wie windasm, aber man kanns verndern. Jetzt fragt ihr euch wozu man dann windasm braucht
wenn man alles mit hiew machen kann? ganz einfach: hiew zeigt nicht die Fehlermeldungen und deshalb weiss man wenn man nur hiew benutzt
net was man ndern muss. Aber das wird hoffentlich spter noch deutlich.
2. gibt es den guten alten hexeditor. Ich benutze aber hiew, weil es alles so anzeigt wie windasm und somit irgendwie bersichtlicher ist. 

Also, jetzt gehts los.
Zuerst installieren wir Needforspeed3. Immer vollinstalationen machen.
Wir gehen ins nfs3 dir und machen eine kopie von der nfs3.exe (rechtsklick, kopieren, im selben fenster einfgen)
Es msste dann eine Datei dasein die "kopie von nfs3.exe" heisst.
Wenn wir das haben fnnen wir windasm. Wir klicken auf "disassembler" (oben links) und whlen "open file to disassemble".
Wir whlen die datei "kopie von nfs3.exe" aus dem nfs3 dir und warten bis er fertig ist. 
Nun kann es sein das ihr nur schrott seht. Dann msst ihr eine schriftart whlen. Dazu auf "Disassembler", "Font", "select Font"
klicken und ne schrift whlen. ich empfehle courir da mann damit am meissten berblick hat.
Wenn ihr das habt erstmal nfs3 OHNE cd im Laufwerk starten. 
Dann kommt folgende message: "Um need for speed 3 spielen zu knnen, muss die cd im cd-rom-laufwerk eingelegt sein."
Das merken wir uns und gehen wieder in windasm.
Dort klicken wir jetzt aufs "refs" men (oben rechts) und whlen "string data references".
Dort sind jetzt alle Fehlermeldungen und sonstige sachen. Jetzt suchen wir nach der Fehlermeldung von vorher, also:
"Um need for speed 3 spielen zu knnen, muss die cd im cd-rom-laufwerk eingelegt sein."
Doch solang wir auch suchen, sie ist net da. scheisse. sind die von ea wohl doch schlau. 
Denkste.
Denn das was die machen ist eine beliebte art die Meldung zu verstecken. das macht es fr uns aber net schwerer.
Wir starten nfs3 nochmal ohne cd und da steht wieder( wei solls auch anders sein):
"Um need for speed 3 spielen zu knnen, muss die cd im cd-rom-laufwerk eingelegt sein."
Doch das lassen wir auser acht und schaun uns an was darber steht. Da steht "Need for speed 3".
so, danach suchen wir jetzt in windasm(wie vorher). Und siehe da, wir finden es. 
Es gibt da "Need for speed 3" und "need for speed III". Welches nehmen wir? natrlich "Need for speed 3" weils so ber der Fehlermeldung steht. also klicken wir zweimal auf "Need for speed 3" und schwupp sind wir an einer anderen stelle. Das schaun wir uns jetzt mal an.
Da steht: (n bisserl ber "Need for speed 3":


Possible StringData Ref from Data Obj ->"Need for Speed 3"

004B637A 683CFE5300                  push 0053FE3C
004B637F 8B5485DC                    mov edx, dword ptr [ebp+4*eax-24]
004B6383 52                          push edx
004B6384 6A00                        push 00000000

Reference To: USER32.MessageBoxA, Ord:001Fh

004B6368 2EFF1564475300              call dword ptr cs:[00534764]
004B638D 31C0                        xor eax, eax
004B638F E870990200                  call 004DFD04
     
Reference by a (U)nconditional or (C)onditional Jump at Adress:
004B6362(C)

004B6394 E807FFFFFF                  call 004B62A0
004B6399 85C0                        test eax, eax
004B639B 755A                        jne 004B63F7                                    
004B639D 31D2                        xor edx, edx
004B639F EB19                        jmp 004B63BA

Reference by a (U)nconditional or (C)onditional Jump at Adress:
004B63C3(C)

004B63A1 88D0                        mov al, dl
004B63A3 0441                        add al, 41
004B63A5 8845F4                      mov byte ptr [ebp-0C], al
004B63A8 8D45F4                      lea eax, dword ptr [ebp-0C]
04B63AB E8809F0300                   call 004F0330                     <-----   ruft nach der cd
004B63B0 85C0                        test eax, eax                     <-----   testet ob sie da ist
004B63B2 7543                        jne 004B63F7                      <-----   wenn es nicht zutrifft das sie nicht da ist     
     										   (also wenn sie da ist) springt er zu 004B63F7
Reference by a (U)nconditional or (C)onditional Jump at Adress:        wenn sie nicht da ist luft er zur Fehlermeldung
004B63C5(U)

004B63B4 42                          inc edx
004B63B5 83FA1A                      cmp edx, 0000001A
004B63B8 7D0D                        jge 004B63C7

Reference by a (U)nconditional or (C)onditional Jump at Adress:
004B639F(U)

004B63BA 89DO                        mov eax, edx
004B63BC E84F300400                  call 004F9410
004B63C1 85C0                        test eax, eax
004B63C3 75DC                        jne 004B63A1
004B63C5 EBED                        jmp 004B63B4

Reference by a (U)nconditional or (C)onditional Jump at Adress:
004B63B8(C)

004B63C7 B906000000                  mov ecx, 00000006
004B63CC 8D7DC4                      lea edi, dword ptr [ebp-3C]
004B63CF BEAC564B00                  mov esi, 004B56AC
004B63D4 6A30                        push 00000030
004B63D6 A1503A7A00                  mov eax, dword ptr [007A3A50]
004B63DB F3                          repz
004B63DC A5                          movsd

Possible StringData Ref from Data Obj ->"Need for Speed 3"              <---- Fehlermeldung, das cd nicht da ist

004B63DD 683CFE5300                  push 0053FE3C
004B63E2 E84F300400                  mov ecx, dword ptr [ebp+4*eax-3c]
004B63E6 85C0                        push ecx
004B63E7 75DC                        push 00000000

Reference To: USER32.MessageBoxA, Ord:001Fh

004B63E9 2EFF1564475300              call dword ptr cs:[00534764]
004B63F0 31C0                        xor eax, eax
004B63F2 E80D990200                  call 004DFD04                       <---- Hier ist schluss und er bricht ab


Reference by a (U)nconditional or (C)onditional Jump at Adress:
004B639B(C), :004B63B2(C)                                                                    

004B63F7 89EC                        mov esp, ebp                        <---- Hier springt er hin wenn die cd drin ist und macht dan weiter
004B63F9 5D                          pop ebp
004B63FA 5F                          pop edi
004B63FB 5E                          pop esi
004B63FC 5A                          pop edx
004B63FD 59                          pop ecx
004B63FE 5B                          pop ebx
004B63FF C3                          ret
.
.
    
Nun schaut man sich immer alle jumps mal an. (Stehen alle weiter unten erklrt)
Die wichtigisten sind jmp (Spring immer), je (jump if equal) und jne (jump if not equal).
Interessant ist wenn irgendwo ein jne mit einem call und test dafor steht. Denn bei call wird die cd gesucht und bei test getestet ob sie da is. (Nicht bei jedem call sucht er die cd!!!) Am besten ist ein jump mit einem call, dann einem test und dann der jump der unter die Fehlermeldung springt. (Die adresse steht ganz links, wohin der jump springt steht rechts neben dem jump).
also schaun wir uns den oben markierten jne 004B63F7 an weil ein call und ein test davor sind. Ausserdem springt er ber die Fehlermeldung.
("Need for speed 3"). 
jne 004B63F7 heisst springe zu 004B63F7 wenn wenn die bedingung nicht erfllt ist. Doch welche bedingung?
Natrlich die das die cd NICHT im laufwerk ist. (vorher hat er ja getsetet ob sie da ist)
Also in dem Fall: Springe NICHT zu 004B63F7 wenn die cd NICHT im laufwerk ist. Klar, oder? 
Also wenn die cd nicht im laufwerk ist lsst er den jump weg und luft weiter. Und was kommt danach? Unsre Fehlermeldung "Need for speed 3".
Und was machen wir nun? Wie wr's wenn wir den jne in einen jmp (spring immer) ndern? dann wrde er zwar testen ob die cd da ist aber danach springt er immer ber die Fehlermeldung und lsst sie somit weg, weil er denkt das die cd im Laufwerk ist, da er ja den jne nichtmehr weglassen kann wenn die cd nicht im Laufwerk ist, weil das jetzt ein jmp ist wo er IMMER springt.
Das ist jetzt kompliziert aber ich hoffe ihr checkt es.
Wir klicken auf den jne 004B63F7 und merken uns das was in windasm ganz unten hinter dem @offset steht. Die nuller knnen und das h mssen wir weglassen. Also merken wir uns vom @offset 000B57B2h nur B57B2.
nun, da wir jetzt wissen was wir ndern mssen gehn wir in hiew (hiew.exe starten). Dann ffnen wir die datei nfs3.exe im nfs3 dir (F1 fr Laufwerk wechseln wenn nfs3 dir zb auf d: ist) und sehen nur hexzeichen. Deshalb drcken wir F4 und whlen Decode.
Jetzt schauts genauso aus wie in windasm. Als nchstes F5 drcken und das was wir und gemerkt haben eingeben (B57B2).
Jetzt springt er zu dem jne. Aber wir knnen nicht zum jne hin und ihn in jmp ndern. Wir mssen in der selben zeile 
(da steht 004B63B2 7543            jne ...)
die 75 in eb ndern. warum? weil 75 der hexcode fr jne und eb der fr jmp ist. (Ich habe alle hexcodes unten aufgelistet)
also rcken wir F3 und nun knnen wir die 75 in EB ndern. (fr die 7 ein E und fr die 5 ein B) dann steht rechts nimmer jne sondern jmp.
(das sollte dann dastehtn:   004B63B2 EB43          jmp ......)
[Wenn er einen error bringt wenn man F3 drckt ist die nfs3.exe noch irgndwie geffnet. vielleicht habt ihr bei der Fehlermeldung net auf ok geklickt.]
Nun F9 drcken (das is speichern) und f10 (rausgehen) und nfs3.exe starten.

Tada, es geht!!!! Der cd check is wech. Aber halt, was soll das??

Abort message:
openhandlea-OPEN FAILED ON x:\GameData\Audio\pc\show(z).map                (x is euer cdlaufwerk, z eine zahl)
schweinerei!!!
Aber kein problem. kopieren wir doch einfach diesen ordner ins nfs3 dir.
den gesamten GameData\Audio ordner von der cd in den Gamedata\audion ordner auf der hd kopieren.
nfs3.exe starten und es funtzt immer noch net.
wieder die selbe Fehlermeldung. d.h er hat irgendwo unser cd Laufwerk gespeichert.
das mssen wir wegkriegen. also mal registrirung ffnen (start, ausfhren, regedit) und in localmachine, software, ea, nach irgendeiner
cd laufwerksangabe suchen. doch fehlanzeige. nix da. naja, weiter suchen. ffnen wir mal die insatll.win im nfs3 dir. (mit notepad)
und was steht da?
n paar laufwerksangaben.
einfach ndern das das da steht: (Deutsche version)

german                           
local
.\GameData\
.\GameData\Tracks\
.\GameData\Tracks\Tutor\
.\GameData\CarModel\
.\GameData\Render\pc\
.\GameData\DashHud\
.\GameData\Audio\pc\
.\GameData\Audio\SFX\
.\GameData\Audio\Speech\English\
.\GameData\Audio\Speech\German\
.\GameData\Audio\Speech\French\
.\GameData\Audio\Speech\Spanish\
.\GameData\Audio\Speech\Italian\
.\FeData\art\
.\FeData\text\
.\FeData\text\
.\FeData\save\
.\FeData\stats\
.\FeData\config\
.\FeData\audio\
.\FeData\Art\Slides\
.\FeData\Art\Track\
.\FeData\Art\Showcase\
.\FeData\movies\
.\FeData\stats\prh\


nfs3.exe mal wieder starten und siehe da, es luft!!!!
Have phun with da game!!!
anmerkung: Dieses Spiel hat einen der billigsten cd checks die ich jemals gesehen habe. Also fhlt euch nich gleich als meistercracker wenn
ihr das alles geschaft habt. Denn um ein meistercracker zu werden braucht man sehr sehr viel erfahrung. Deshalb macht weiter.
Lest mein blood2 tutor. das is schon n bisserl schwerer. Und dann versuchts mal selber. zb mit Sin, das is auch easy.
Fragen, wnsche, anregungen? Mailt mir.
viel glck in eurer crackerkarriere,

aDENOZiN, Germany 1999
http://come.to/aDENOZiN
Adenozin@gmx.net
my group:
http://tbc.tsx.org


Jump Befehle(aus tKC's Tutor #1, thx!) 
_____________________________________________________
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
