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

                     ~~~~~~~~tIMELESS~~~~~~~~
                      Founder of fRACTUs`99


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


                         Nag Removal Tutor
                        ~~~~~~~~~~~~~~~~~~~

So, jetzt wagen wir uns mal an die Nags ran. 
Ein Nag ist ein nerviger Screen, der uns zum Beispiel daran erinnert, das
das Programm (noch ;-)) Shareware ist. Ein solcher Nag knnte zum Beispiel
in Form einer Messagebox auftreten. Oder aber er steht in der Menleiste.
Und nun werden wir diese Nags mal entfernen.......

Tools: W32Dasm, Hex-Editor
~~~~~~

Zeit: 15 Minuten (um zu begreifen und zu cracken ;-)))) )
~~~~~



Let the Carnage begin......
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Zuerst einmal gehen wir ganz unbefangen an das neue Projekt heran....
Wir starten die Qedit.exe und sehen uns schon mit dem ersten Nag konfrontiert.
Ein Fenster, indem wir den Freischaltcode eingeben sollen. Interessant ist, 
dass es nur eine Codeabfrage ist und kein Name/Code-Abfrage. Das heisst, 
dass es nur einen einzigen Freischaltcode gibt, den das Programm akzeptiert.
Das halten wir gedanklich fest. Wir geben in der Zeile eine beliebige 
Zahl ein, besttigen und die Folge ist: "Der Code ist ungltig" (ach nee).
Diesen String merken wir uns und bettigen den "Spter" Button. Wir kommen
in das Programm selber hinein. Hier gehen wir mal in das About-men (?-INFO)
und schauen uns mal diese Box an. Nichts was auf die Shareware hindeutet.
Jediglich die Versionsnummer wird angezeigt. Wir merken uns hier nur, dass
eben nix dasteht (warum, erklr ich spter). So, und nun beenden wir das
Programm...OHO... auch noch ein Nag am Ende: "Dieses Programm ist Shareware".
Das merken wir uns natrlich auch und beginnen jetzt mit dem eigentlichen
Cracken. Wir disassemblieren ersteinmal mit dem Dasm. Dann schauen wir 
uns einmal die String Data Reference an.

1.) "Der Code ist ungltig":
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Wir finden "Der Code ist Ung". Doppelklick darauf, nocheinmal.........
Wunderbar, nur eine einzige Reference im ganzen Programm.


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00460AC0 (C)
|
:00460AFC 6A10            push 00000010

* Possible StringData Ref from Code Obj -> "Quick-Edit"

:00460AFE B9400B4600      mov ecx, 00460B40

* Possible StringData Ref from Code Obj -> "Der Code ist Ung"

:00460B03 BADCOB4600      mov edx, 00460BDC
        ...                   ...
        ...                   ...

Aha, ein Conditional Jump. Gehen wir mal mit GOTO Code Location an die 
Stelle, von der der Jump herkommt.

        ...                   ...
:00460ABB E0CC31FAFF      call 00403C8C
:00460AC0 753A            jne 00460AFC <--das isser!
:00460AC2 6A40            push 00000040

* Possible StringData Ref from Code Obj -> "Quick-Edit"

:00460AC4 B9400B4600      mov ecx, 00460B40

* Possible StringData Ref from Code Obj -> "Herzlichen gl"

:00460AC9 BA4C0B4600      mov edx, 00460B4C
        ...                    ...
        ...                    ...

Na, das ist ja wohl viel zu eindeutig!!!! Der Jump muss genoppt werden.
Wir schreiben uns die Hexadresse raus (0005FEC0). OK. Wir beenden den Dasm
und ffnen nun die Qedit.exe mit dem Hexeditor. Offset eingeben. 
9090 (zwei-Byte-NOP). Speichern.......Starten.
Die Nachricht kommt, wir geben irgendetwas ein...und eine neue Messagebox
sagt uns, dass wir neu starten mssen, damit die Registrierung in Kraft 
treten kann. Mist!!!!! Wir ahnen schon was jetzt folgt...richtig:
Die Nachricht kommt wieder. Nicht entmutigen lassen. Gehen wir erst mal 
zum nchsten ber.


2.) "Dieses Programm ist Shareware":
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Zuerst suchen wir den String in der Reference des W32Dasm. Sobald wir ihn
gefunden haben, machen wir einen Doppelklick darauf. Sobald wir an die Stelle
gekommen sind wiederholen wir den Doppelklick um zu sehen, ob es noch eine
Reference im Programm ist. Hier ist das nicht der Fall. Vor uns sehen wir
nun folgenden Code:

        ...                   ...
        ...                   ...
:004622DE E8A919FAFF       call 00403C8C
:004622E3 7418             je 004622FD  <-----AHA, mal sehen wohin der geht!
:004622E5 6A40             push 00000040

       
* Possible StringData Ref from Code Obj -> "QuickEdit98"

:004622E7 B9A0234600       mov ecx, 004623A0

* Possible StringData Ref from Code Obj -> "Dieses Programm ist Shareware!" <--Reference

:004622EC BAAC234600       mov edx, 004623AC
        ...                   ...
        ...                   ...


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004622E3 (C)
|
:004622FD 33C0             xor eax, eax <----Hier geht er hin!
:004622FF 5A               pop edx
        ...                   ...
        ...                   ...


Also hat dieser Jump die Funktion, diesen Nag zu berspringen. Wir mssen
dem Jump also seine Bedingung nehmen und ihn Unconditional machen.
Und zwar mit EB. Wieder das gleiche: Offset 000616E3, Hexedit, EB.
Danach ausprobieren.....HUUUIIIH, der End-Nag ist ja weg!!!!!!!!!!

Durch dieses Erfolgserlebnis hochmotiviert wagen wir uns jetzt wieder dem
Start-Nag zu. Zu diesem Zweck mssen wir die String Data ein bisschen 
durchwhlen. Wer sucht, der findet: "VOLLVERSION". 
Wir erinnern uns, was ich am Anfang gesagt hatte: In der About-box war
kein Sharewarehinweis zu finden. Das ist aber bei Shareware normal....
HMMMMMMM ???????? ~!~
Knnte es nicht sein, dass das Programm NICHT anzeigt, dass es noch 
Shareware ist aber anzeigt, wenn es zur Vollversion geworden ist????
Da wollte uns der bse Programmierer aber verarschen!!!!!!!!!!!!!!!!

3.)"Vollversion":
~~~~~~~~~~~~~~~~~

Nach einem weiteren Doppelklick (langsam angewhnen!) und dem Ergebnis:
"keine weitere Reference" schauen wir uns wieder mal den Code um die
Reference herum an....................................................



* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004620EA(C)
|


* Possible StringData Ref from Code Obj ->"Vollversion"

:00462104 BAE8214600       mov edx, 004621E8
        ...                   ...
        ...                   ...


Ich glaube, mehr muss ich nicht hinschreiben oder??? Das liegt ja 
gerade perfekt zum Cracken vor uns! Wir gehen zur Reference 004620EA,
schreiben uns den Offset raus (000614EA) und patchen diesen im Hexeditor
mit einem EB. Nachdem wir das ganze gespeichert haben starten wir unser
Programm und.....juhUUUuUUuUuUuUuhUuUuU!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Es funktioniert!

Was ursprnglich "nur" als Nagremoval gedacht war, entpuppt sich als 
vollwertiger Crack. 

Glckwunsch!

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

Fr Fragen oder Anregungen: tIMELESS99@gmx.net



Bis bald

tIMELESS




