		
           /-----------------------------------------------------------------\
          /								      \
         <  W32DASM Tutorial - How to Crack Scripto v0.8b - by 666 [GWA/CUG]   >
          \  							              /	
	   \-----------------------------------------------------------------/


 Greetz to:
 Einfach an alle die ich kenne, sonst werden wir ja hier nie fertig :p


 Vorraussetzungen:
-Crackergrundkenntnisse in ASM
-Scripto v0.8b (http://187studio.hypermart.net/download/scripto.exe)
-mindestens 2.0 Promille


 Benoetigte Tools:
-W32DASM (v8.93+)
-HIEW (v6.02+)
-Blatt Papier + Stift (oder Gedaechtnis)


Jetzt hab auch ich mich endlich mal dazu entschlossen ein Tutorial zu schreiben. Warum wollen
wir gerade Scripto cracken? Es ist einfach zu cracken und man bekommt es auch noch nach einer
durchzechten Nacht in der Disko hin. Also nachdem ihr Scripto runtergeladen habt, solltet ihr
es installieren. Danach Scripto aufrufen und es erscheint (noch) ein wirklich haesslicher Nag.
Wir klicken auf 'Nein' und gehen nachdem das Progie voll geladen ist unter 'Register' auf 
'Enter Number'. Dort geben wir dann irgendetwas ein und bestaetigen das ganze mit OK und ach
wie komisch es erscheint die Meldung 'Nice Try! Try again!'. Gut also, dann starten wir doch 
mal unser W32DASM und klicken auf den ersten Button oben links. Nun wechselt ihr in das 
Verzeichnis, wo ihr Scripto hininstalliert habt und macht einen Doppelklick auf die Datei 
'Scripto.exe'. Nun wird das ganze disassembled (dies sollte nicht all zu lange dauern). 
Wir bekamen ja oben die Meldung 'Nice Try! Try afain!' und wenn es eine Meldung gibt, dass
es die falsche Seriennummer war, gibt es in den meissten Faellen auch eine Meldung, wenn die
Seriennummer richtig war. Genau nach der halten wir nun mal ausschau. Dies machen wir indem
wir auf den 2. Button oben rechts im W32DASM klicken (String References). Hier scrollen wir nun
mal nach einer Meldung die sagt, dass das Progie erfolgreich registriert wurde. Also *scroll*
*scroll* .... und auf einmal sehen wir: "Thank you for supporting our product!". Auf diese
Meldung machen wir einen Doppelklick und sehen dann folgendes:

* Reference To: MFC42.Ordinal:18BE, Ord:18BEh
                                  |
:00403B4D E870440000              Call 00407FC2
:00403B52 8B4E64                  mov ecx, dword ptr [esi+64]
:00403B55 B85BBB0FB7              mov eax, B70FBB5B
:00403B5A F7E9                    imul ecx
:00403B5C 03D1                    add edx, ecx
:00403B5E C1FA09                  sar edx, 09
:00403B61 8BC2                    mov eax, edx
:00403B63 C1E81F                  shr eax, 1F
:00403B66 03D0                    add edx, eax
:00403B68 85D2                    test edx, edx
:00403B6A 0F8EEF000000            jle 00403C5F
:00403B70 81FA30750000            cmp edx, 00007530
:00403B76 0F8DE3000000            jnl 00403C5F
:00403B7C 8BC1                    mov eax, ecx
:00403B7E B9CC020000              mov ecx, 000002CC
:00403B83 99                      cdq
:00403B84 F7F9                    idiv ecx
:00403B86 85D2                    test edx, edx
:00403B88 0F85D1000000            jne 00403C5F      <--------------DAS IST ER
:00403B8E 6A40                    push 00000040

* Possible StringData Ref from Data Obj ->"Scripto"
                                  |
:00403B90 681CE24000              push 0040E21C

* Possible StringData Ref from Data Obj ->"Thank you for supporting our product!"
                                  |
:00403B95 6894E64000              push 0040E694
:00403B9A 8BCE                    mov ecx, esi

* Reference To: MFC42.Ordinal:1080, Ord:1080h
                                  |
:00403B9C E811450000              Call 004080B2
:00403BA1 83F801                  cmp eax, 00000001
:00403BA4 0F85D4000000            jne 00403C7E
:00403BAA 51                      push ecx
:00403BAB 8BCC                    mov ecx, esp
:00403BAD 89642408                mov dword ptr [esp+08], esp


Wir sehen also die Meldung "Thank you for supporting our product!" und kurz darueber gleich
einen JNE (Jump if not equal) an der Codelocation 00403B88. Wir machen einen Doppelklick auf
diesen Jump und sehen ganz unten, in der Statuszeile folgendes:

Line:6037 Pg 121 and 122 of 400 Code Data @:00403B88 @Offset 00003B88h in File: Scripto.exe
						     -----------------

Das was ich nun unterstrichen habe, ist wichtig fuer uns, damit wir nachher wissen, wo wir
das Progie abaendern muessen (am besten ihr schreibt euch diesen Offsetwert auf). Wir wechseln nun 
in unseren Explorer und machen ein Backup von der Datei 'Scripto.exe' (klick auf Scripto.exe und 
danach STRG+C und gleich wieder STRG + V druecken). Wir erhalten im Normalfall eine Datei namens 
'Kopie von SCRIPTO.EXE'. So nun starten wir unser HIEW und wechseln in das Scriptoverzeichnis 
und waehlen die Datei 'Kopie von SCRIPTO.EXE' aus. Wir druecken nun F5 und geben 00003B88 ein 
(dies ist der Wert, den wir vorher unten in der Statuszeile gesehen haben und auch notiert haben 
sollten). Wir sehen dann folgendes:

00403B88: 0F85D1000000                 jne      .000403C5F   -------- (1)
            --

Aus dieser 85 die ich hier unterstrichen habe, machen wir nun eine 84 und das JNE wird in ein JE.
Schnell noch F9 gedrueckt damit HIEW die Aenderung uebernimmt und dann F10 um HIEW zu verlassen.
Zurueck in den Explorer wechseln und die Datei 'Kopie von SCRIPTO.EXE' ausfuehren.
Wir klicken wiedermals auf Nein bei dem Nag und gehen wieder auf 'Register' --> 'Enter number' und
geben irgendeine Nummer ein. Wow nachdem wir auf Ok geklickt haben, bekommen wir die Successfull
regged Msg. Nur nochmal schnell Scripto neustarten um zu schauen, ob es auch regged bleibt?!?!?!?!
Ough was sehen wir denn da?

-------------------------------------------------

Cracking my software?
check out http://www.fbi.gov before you do that!

-------------------------------------------------

Also haben die da noch eine Checkroutine eingebaut wenn es das Program laedt. Das ist aber nicht weiter
schlimm! Wir notieren uns die Meldung und wechseln wieder in unser W32DASM und klicken wieder die
String References an (2. Button rechts oben). Dort suchen wir nach der Meldung 'Cracking my software?'.
Gefunden? Gut, dann wieder ein Doppelklick darauf und wir sehen folgendes:

* Reference To: MSVCRT._ftol, Ord:00F1h
                                  |
:00406014 E8D1240000              Call 004084EA
:00406019 8BC8                    mov ecx, eax
:0040601B B85BBB0FB7              mov eax, B70FBB5B
:00406020 F7E9                    imul ecx
:00406022 03D1                    add edx, ecx
:00406024 C1FA09                  sar edx, 09
:00406027 8BC2                    mov eax, edx
:00406029 C1E81F                  shr eax, 1F
:0040602C 03D0                    add edx, eax
:0040602E 85D2                    test edx, edx
:00406030 7E21                    jle 00406053          <-------------DER HIER       @Offset 00006030h (1)
:00406032 81FA30750000            cmp edx, 00007530
:00406038 7D19                    jge 00406053          <-------------DER HIER       @Offset 00006038h (2)
:0040603A 8BC1                    mov eax, ecx
:0040603C B9CC020000              mov ecx, 000002CC
:00406041 99                      cdq
:00406042 F7F9                    idiv ecx
:00406044 85D2                    test edx, edx
:00406046 750B                    jne 00406053          <-------------DER HIER       @Offset 00006046h (3)
:00406048 6A01                    push 00000001
:0040604A 8BCF                    mov ecx, edi
:0040604C E83F050000              call 00406590
:00406051 EB21                    jmp 00406074

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00406030(C), :00406038(C), :00406046(C)
|
:00406053 6A10                    push 00000010

* Possible StringData Ref from Data Obj ->"Scripto warning!"
                                  |
:00406055 6888F34000              push 0040F388

* Possible StringData Ref from Data Obj ->"Cracking my software?"
                                  |
:0040605A 6840F34000              push 0040F340
:0040605F 6A00                    push 00000000


Jump (1) an Code Location 00406030
----------------------------------

HIEW starten wieder die Datei 'Kopie von SCRIPTO.exe' auswaehlen und dann F5 druecken und 00006030 eingeben,
dies mit Return bestaetigen. 
Wir sehen dann folgendes:

.00406030: 7E21                         jle      .000406053   -------- (1)    <---DAS IST Jump (1)

Dies aendern wir indem wir F3 druecken, Return druecken und dies so abaendern:

.00406030: 85D2                         test      edx,edx

Man kann auch diesen Jump 'nopen' indem man 7E21 anstatt von 85D2 mit 9090 ersetzt.

Die Aenderung mit F9 uebernehmen.

Jump (2) an Code Location 00406038
----------------------------------

Wir druecken ein weiteres mal F5 und geben 00006038 ein.
Wir landen dann hier: 

.00406038: 7D19                         jge      .000406053   -------- (1)


Wir aendern die die 7D19 in 7419 um dies machen wir indem wir F3 druecken
und dann den Cursor unter 7D19 hinfuehren und dies eben in 7419 abaendern.

Das sieht dann so aus:


.00406038: 7419                         je       .000406053   -------- (1)

F9 druecken damit HIEW die Aenderungen uebernimmt.

Jump (3) an Code Location 00406046
----------------------------------

Wie sollte es auch anderst sein, wir druecken wieder F5 und geben 00006046 ein.
Wir sehen dann folgendes:

.00406046: 750B                         jne      .000406053   -------- (2)


Wir aendern das dann wie folgt um:
F3 druecken und die 750B in 740B umwandeln.

Das sieht dann so aus:

.00406046: 740B                         je       .000406053   -------- (1)


Wir druecken nun F9 und danach F10.

So, wir gehen wieder in den Explorer und fuehren die Datei 'Kopie von SCRIPTO.exe' aus.
Und was sehen wir bzw. was sehen wir nicht?
Es ist registriert und keine haesslichen Nags mehr.
Dies war nun ein Any Serial Crack, d.h. das Program kann auf jede beliebige Seriennummer
registriert werden. Ihr koennt nun noch mit nem Patchengine einen Patch machen, oder
coded einfach euren eigenen Patch. 

Da dies mein erstes Tutorial wuerde ich mich freuen, wenn ihr mir Meinungen und Kritik zukommen
lassen koenntet.

Ihr koennt mich wie folgt erreichen:

IRC:   Im EfNet in #cug und #gwa
eMail: isowar@gmx.net
ICQ:   12278223


So noch viel Spass beim cracken.

[666]