             ___  ___ _  _   ____   ___ ____   ____   ____  
           _/  /_/  // \/ \ /    \ /  //    \ /    \ /    \
          /_   _/  //      \  ___//  //  ___//  ___//  ___/
           /  //__//        \___//  //  ___//___  //___  /
          /______//___\__/\  \_//____/___ / \____/ \____/
                           \__\
             

                     ~~~~~~~~tIMELESS~~~~~~~~
                       Member of fRACTUs`99


   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   | Keygen ( )   RegKey ( )   Regfile ( )   Crack ( )   Appz  ( ) |                                                              
   |                                                               | 
   | Tutor  (x)   Progz  ( )   Message ( )   Filez ( )   Other ( ) |                                                              
   |                                                               | 
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
Tutor 1:
~~~~~~~~

Programm: Desktop Toys 2.0
Cracker:  tIMELESS
Bentigte Zeit: 5 Minuten (kein Witz)
Bentigte Tools: W32Dasm 8.9, Hex-Editor

Also, das geht so:
~~~~~~~~~~~~~~~~~~
Zuerst einmal desk.zip auf die Festplatte entpacken.
Dann starten wir eine der EXE-Dateien (z.B. DriveClick.exe), die Codeabfrage
kommt. Wir geben irgendeinen Scheiss ein....und..."Der Code ist ungltig!"
erscheint in einer neuen MsgBox. Das merken wir uns! So nun gehts ab
in den W32Dasm, disassembling und "String Data Reference" whlen. 
Wir schauen nach "Der Code ist ungltig" und finden.... nix. Hmm. Was
machen wir jetzt? Schauen wir doch mal in der DeskToys.dll nach, schliesslich
kann der W32Dasm auch DLLs ffnen. Also ran, und nachschauen. Wir werden
fndig "Der Code ist ung". Wir habens. Doppelklick und schon sind wir da.
So, jetzt gehts richtig los. Oberhalb der Reference finden wir die Zeile

"Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004274E1(C)

Jetzt gehen wir mal dahin (mit Goto Code Location aus der oberen Leiste).
Wir finden folgendes vor:

:004274E1 757D                    jne 00427560
(Adresse) (Hex)                   (Prozedur "jump if not equal")
 
Aha, sollte der eingegebene Code falsch sein (jne) dann gehe zu Nachricht
"Der Code ist ungltig". Klar?
Wie knnte man nun diese Prozedur umgehen? Jmp und je bringen hier nichts
also hilft uns nur noch ein NOP (No Operation Point) der die ganze Prozedur 
einfach weitergibt. Dies verndern wir mit einem Hex Editor (Hex Workshop)
Den Offset dafr finden wir im W32Dasm unten in der Leiste (Der Streifen 
muss immer noch auf "jne 00427560" stehen. Alles was wir jetzt noch tun mssen
ist DeskToys.dll mit einem Hex Editor zu ffnen zum Offset 000268E1 (in Hex)
zu gehen und den Code mit zwei 90gern zu patchen. Speichern. EXE starten.
Irgendwas eingeben. Tadaaa. Ich bin lizensierter User.


Mglichkeit 2: RegKey finden

Auf diese Mglichkeit bin ich gestossen als ich die DLL schon gepatcht
hatte. Ich stberte in meiner WinReg ein bisschen rum und fand unter

[HKCU] - Software - ZOK-Software - DesktopToys  

etwas interessantes, nmlich

[HKEY_CURRENT_USER\Software\ZOK-Software\DesktopToys]
"RegCode"="4574128"
"RegOwner"="tIMELESS"

Aha, der RegCode sowie der UserName werden in der WinReg gespeichert.
Von da aus wird er immer beim Programmstart abgefragt. Nun hatte ich 
bei der Abfrage des RegCodes 7777777 eingegeben und in der WinReg wurde
dieser Wert verschlsselt:   4574128 steht da. Hmm. Theoretisch knnte
man nun doch herausfinden wie das Programm mit dem bei der Abfrage ge-
speicherten Wert umgeht. Probieren geht ber studieren. Also geben wir 
nun in der WinReg als RegCode irgendwas ein (damit das Programm denkt,
es sei noch nicht registriert). F5 drcken (fr Updating) und dann wieder
eines der DesktopToys starten. Bingo, wir mssen wieder die Daten einge-
ben. Dank der gecrackten DLL gibt es ja keine Probleme.
Geben wir hier nun mal 8888888 ein. HiHi wir sind wieder registriert.
Nun schaun wir mal in der WinReg, und wir sehen.....

[HKEY_CURRENT_USER\Software\ZOK-Software\DesktopToys]
"RegCode"="4574128"
"RegOwner"="tIMELESS"

Ob das nun reiner Zufall ist? Wieder das gleiche Ergebniss. Wir wiederholen 
den Schritt und geben 1234567 ein. Das Ergebnis:

[HKEY_CURRENT_USER\Software\ZOK-Software\DesktopToys]
"RegCode"="4574128"
"RegOwner"="tIMELESS"

Wir geben nicht auf, wiederholen den Schritt und geben dieses Mal an der
Abfrage eine... sagen wir... 33stellige Zahl ein. Wieder sind wir registriert
und wieder steht in der WinReg:

[HKEY_CURRENT_USER\Software\ZOK-Software\DesktopToys]
"RegCode"="4574128"
"RegOwner"="tIMELESS"

Was folgert der schlaue Cracker daraus?
Richtig! Wenn das Programm die Informationen aus der Registrierungsangabe
einliest und (dank der kooperativen ;-) DLL) sie als richtig einstuft, 
speichert es in der WinReg als RegCode nur einen Wert, der dem Programm
erzhlt, dass es registriert ist.

~~~~~~~~~~~

DesktopToys: "Hallo WinReg, schner Tag heute. Ach, mal ne Frage:
              Bin ich registriert?"

WinReg: "Hallo Programm, da muss ich mal schauen. [wenige Nanosekunden spter]
         Aha, hier haben wirs ja. Stimmt 4574128?"

DesktopToys: "Ja, FREU, ich bin registriert!" 

~~~~~~~~~~~~

Da wir vorher ja nicht wissen knnen wie der Code lautet bringt uns das
natrlich nur etwas, wenn wir davor die DLL gecrackt haben, oder wir das
Originalprogramm gekauft haben (schn bld!). Aber es ist trotzdem interessant
zu wissen, wie man ein Programm noch cracken kann. 

F: "Funktioniert das auch mit der ungecrackten DLL?"
A: "Ja, wir mssen nur das Programm mit unserem Namen und der Nummer
    4574128 registrieren, denn das ist der einzige Freischaltcode der das
    Programm registriert!

Und, wieder was gelernt?
JAAAAAAAAAAA!

~~~~~~~~~~~~~

Fr Fragen und Anregungen: tIMELESS99@gmx.net
