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

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


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

Tutor 3:
~~~~~~~~

Hallo, liebe Leute. Heute lernen wir (fast) nix Neues aber vertiefen noch
einmal paar Sachen.

Programm: TweakJR (Win98)
Cracker: tIMELESS
Bentigte Tools: W32Dasm, Hex-Editor
Bentigte Zeit: 5 min. (wie immer!)

Also lasst uns anfangen.....

Als erstes Mal entpacken wir tweakjr.zip auf die Festplatte, installieren
(Registrierungsnummer muss beim installieren nicht eingegeben werden), und
Programm starten. Jetzt schaun wir mal... Aha, eine About-Box mit Registerbutton
FREU (Der kleine Cracker erwacht) irgendetwas eingeben...:

<You entered the wrong......>
 
Das reicht. Nun gehen wir in den W32Dasm und disassemblieren mal schn.
Dann gehen wir unter String Data Reference und suchen die Nachricht und
finden sie auch (!). Doppelklick, und wir gehen an die Adresse 00403B58.
Nochmal Doppelklick...keine andere Reference im Programm. So jetzt gehen
wir mal in das Codelisting und tracen ein bisschen (cooler Crackerslang fr
"durchstbern" ;-)). Was wir als erstes tun ist eine Jump-Reference zu
finden. Aber wir sehen keine (Ok, Ok da ist eine, aber die ist ganz weit
oben!!!). Also schauen wir mal den nheren Code an:


:00403B38 90          nop
:00403B39 90          nop
:00403B3A 90          nop
:00403B3B 90          nop          Huiih, das sieht aus wie ein von uns
:00403B3C 90          nop          bearbeitetes Programm :-)
:00403B3D 90          nop
:00403B3E 90          nop
:00403B3F 90          nop
:00403B40 56          push esi
:00403B41 8BF1        mov esi, ecx
:00403B43 E848000000  call 00403B90
:00403B48 85C0        test eax,eax   <------------ AHA!!!!!
:00403B4A 7515        jne 00403B61   <------------ AHA!!!!!
:00403B4C 6A30        push 00000030


*Possible StringData Ref from Data Obj ->"TweakJr 98 - Registration

:00403B4E 6840B24000  push 0040b240

*Possible StringData Ref from Data Obj ->"You entered the wrong Serial. "
                                       ->"Please try again and check your "
                                       ->"spelling! "

:00403B53 68F8B14000  push 0040B1F8 <------------- da kommen wir raus
:00403B58 8BCE        mov ecx, esi

So, jetzt betrachten wir mal Adresse(n) 00403B48/A genauer. Da haben wir
es doch offen vorliegen! Das Register EAX wird berprft und ein konditionaler
Jump ist in der nchsten Zeile. Gehen wir mal auf den Jump und schauen,
wo der hingeht.

*Referenced by a (U)nconditional or (C)onditional Jump at Address
|:00403B4A
|
:00403B61 6A00         push 00000000

*Possible StringData Ref from Data Obj ->"TweakJr 98 - Registration"

:00403B63 6840B24000   push 0040B240

*Possible StringData Ref from Data Obj ->"Thank you for regestering"

:00403B68 68DCB14000   push 0040B1DC 
:00403B6D 8BCE         mov ecx, esi

Aha, wenn der Rckgabewerte des Registers EAX ungleich dem erwarteten Wert
ist, gehe zu Nachricht, die sagt, dass das Programm registriert ist.
Was wir jetzt nur noch tun mssen ist den Offset der Adresse 00403B4A
rauszuschreiben (00003B4A (h)) und das Programm veranlassen immer zur
Registriermeldung zu gehen. Das machen wir, indem wir den bedingten Sprung
an dieser Adresse (bedingt durch das Prfen des EAX-Registers) durch einen
unkonditionalen Sprung zu ersetzen, ein einfacher jmp! Der Hex-Wert dafr 
ist EB. Also gehen wir im Hex-Editor an den Hex-Offset 00003B4A und ndern
die 75 in EB. Speichern. Testen........
Programm akzeptiert. FREU. Nochmal beenden (um zu sehen ob es immer noch
registriert ist wenn man neustartet). Es ist immer noch registriert.
Glckwunsch, wieder ein Programm gekauft :-)))))))).

Haha, erinnert ihr euch noch an den Tutor 1 (Desktop Toys)? Da gabs doch 
auch noch eine zweite Mglichkeit. Den RegKey. Diese Mglichkeit gibt 
es in diesem Falle auch. Und zwar unter 

[HKEY_LOCAL_MACHINE\Software\JockeSoft\TweakJr 98\1.2]
"Name"="tIMELESS"
"SerialNum"="-6410967671025794"
"Started"="" 
"Restart"="0"

Ich hatte als Serialnumber wieder 7777777 eingegeben. Und wieder ist 
da eine Zahl die (scheinbar ?!?) nix mit ihr zu tun hat. Dieser Sache
mchte ich noch mal ganz kurz nachgehen. Wir gehen also in die WinReg
und deregistrieren (gibts das Wort?) das Programm erst mal (Als Serial
irgendetwas eingeben). So jetzt starten wir das Programm........
Wir sind wieder UNLICENSED. Jetzt registrieren wir mal mit 12345. Da
das Programm alles akzeptiert, sind wir wieder LICENSED. In die WinReg...
Da steht:

[HKEY_LOCAL_MACHINE\Software\JockeSoft\TweakJr 98\1.2]
"Name"="tIMELESS"
"SerialNum"="-6410967671025794"
"Started"="" 
"Restart"="0"

Ich kanns nicht glauben. Wieder das selbe System wie bei Desktop Toys!!!!
Dieses mal ist die Nummer halt 16 stellig (noch schwerer zu cracken ;-))
Wir knnen nun den RegKey exportieren und als rEgCRacK verkaufen ;-).

Hier knnen wir aber leider die Zahlenkette nicht als direkter 
Freischaltcode eigeben, weil der intelligente Programmierer (hihihi)
den Registry-Wert ganz extrem verschlsselt hat ;-)
Bis bald!


Grsse an: cI[ERo
~~~~~~~~~~~~~~~~~

Fragen und Anregungen: tIMELESS99@gmx.net