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

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


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

                           Nagremovaltutor 2
                          ~~~~~~~~~~~~~~~~~~~


Programm: HotKey
Cracker: tIMELESS
Bentigte Zeit: 15 min
Bentigte Tools: W32Dasm, Hex-Editor


Hallo liebe Kinder!

Heute lernen wir, wie man NAGs aus einem Programm entfernt. HotKey ist
eines der Programme, bei denen man nach dem Cracken und Neustarten des 
Programms wieder Name und Code eingeben muss. Das Programm
prft also in der WinReg ob der Key richtig oder falsch ist. HotKey
hat keine Einschrnkungen betreffs nutzbarer Zeit oder Funktionen. Also
bleibt nur noch die Frage wie man die lstige Abfrage am Start umgehen kann.
Dazu tun wir folgendes: 

1.)So cracken, dass der Name /Code immer als richtig erkannt wird 
   (als bung, denn das brauchen wir eigentlich nicht bzw. knnen wir 
   schon ;-))
   Lsung: Offset 00001E6C mit 2mal 90 patchen)

2.)Nachdem wir nun gesehen haben, dass das Programm beim Neustart wieder
   abfragt, bleibt uns nichts anderes brig als im W32Dasm die Option DEBUG
   zu nutzen. 

Und das geht so.......

W32Dasm starten, HotKey.exe disassemblieren, aus dem Men DEBUG->LOAD
whlen und den Button LOAD bettigen. So jetzt dauerts eine Weile bis
der Cursor wieder normal ist...und dann drcken wir mal RUN (F9).....
Das Programm wird gestartet und wir sind bei der Codeabfrage. Jetzt gehen
wir in der Taskleiste wieder auf W32Dasm und whlen im selben Kasten wie
RUN nun STEP INTO (F7) aus. Wir sehen im Fenster den Balken auf der 
folgenden Adresse stehen:

:00403967 call HOTKEY.004021C0

So, nun schliessen wir das Fenster mit TERMINATE und gehen in den Codelistings
an die Adresse 00403967. Wenn wir ein bisschen hochscrollen sehen wir:

* Referenced by (U)nconditional or (C)onditional Jump at Address
|:00403950(C)

Da gehen wir jetzt mal hin. Wir sehen:

:00403950   7515         jne   00403967

Aha, jetzt knnte man das ja theoretisch mit zwei 90gern patchen und die
Sache wre geritzt, aber.....scrollt man noch ein bisschen hher kommt man 
oberhalb des Codelistings in der der Jump ist zu einer blauen Schrift die sagt:

* Reference To: User32.LoadMenuA, Ord:017Eh 

Von hier aus wird also der Nag erst gestartet. Folglich mssen wir 
noch eine Ebene hher gehen. Oberhalb der Reference finden wir auch
was wir suchen:

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

Dahin gehen wir und finden vor:

:004038D0   7456         je    00403928

Von hier aus wird die ganze Codeabfrage nmlich erst geladen. So und hier
knnen wir nun frhlich NOPpen. Offset 00002CD0 in einem Hex-Editor laden
9090 schreiben und speichern. Starten.... und FREU, keine lstige Codeabfrage
mehr. 

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

Fragen: tIMELESS99@gmx.net