

          ۰                                                ۰
         ۰ ۰۰                                             
        ۰   ۰   ۰
       ۰         ۰  ۰    ۰  ۰     ۰    ۰   ۰ ۰  ۰
       ۰          ۰ ۰  ۰  ۰ ۰  ۰ ۰ ۰  ۰  ۰  ۰  ۰  ۰   ۰
        ۰        ۰ ۰    ۰۰     ۰      ۰۰    ۰۰    ۰ ۰   ۰۰
         ۰      ۰   ۰  ۰  ۰  ۰    ۰  ۰  ۰  ۰  ۰ ۰  ۰
                                                             

                             prsentiert voller Stolz:

                  Den ausfhrlichen Cracktutor ber Poster 6.0(q)


                        Tutorial #2 vom 30. Mai 1999, 19:00


---[ Wissenswertes ]------------------------------------------------------------

Das Programm Poster 6.0(q) bietet die Mglichkeit, verschiedenster Arten von
Postern, Logos und hnlichem auszudrucken. Es ist unter

  http://www.postersw.com

als Sharewareversion zu finden.

Folgende Einschrnkungen gelten fr die Sharewareversion:

  * Es knnen insgesamt nur 12 Poster ausgedruckt werden
  * Nag-Screen beim Start
  * Nag-Screen beim Beenden

---[ Information ]--------------------------------------------------------------

Bentigte Tools:

  * W32Dasm 8.9.x, HexWorkshop 2.54 oder anderer

Bentigtes Wissen:

  * Grundwissen ber Bedienung von W32Dasm 8.9.x und eines HexEditors
  
---[ Das Tutorial ]-------------------------------------------------------------

Poster kann ber eine Seriennummer freigeschaltet werden, die man erhlt falls
man das Programm kauft. An diesem Punkt der Seriennummerberprfung werden wir
unseren Crack ansetzen.

Wir laden Poster im W32Dasm, setzen Breakpoints auf die Funktion
USER32.GetDlgItemTextA (liest den Text aus einer Dialogbox). Wir starten das
Proggi und geben im Registrierungsdialog eine beliebige Seriennummer ein. Es
wird in den Debugger gebrochen. Wenn wir uns im Code der nheren Umgebung um-
sehen, sehen wir, da unser Code ein bischen weiter unten gleich mal ber die
Funktion 045C010 mit einem anderen Code verglichen wird. Falls der Code gleich
ist wie der mit dem verglichen wurde, wird eine Meldung ausgegeben, da wir
nicht updaten knnen. Interessant dabei ist, da Poster anscheinden mit
statischen Seriennummern arbeitet (d.h. es gibt nur eine handvoll Seriennummern
die alle fest in der EXE codiert sind). Da wir ja wollen, da immer gesprungen
wird, ndern wir die Sprungbedingung so um, da eben dieses immer geschieht:

  Vor Modifikation:
  
  :0040B62A 751B              jne 0040B647

  Nach Modifikation:

  :0040B62A EB1B              jmp 0040B647

Wenn wir den Sprung nun verfolgen, sehen wir, da unser Code nun mit einer
Reihe von anderen Codes verglichen wird. Wir sparen es uns allerdings, jeden
vergleich zu patchen, wir patchen nur den ersten so um, da gleich zum nchsten
Vergleich gesprungen wird:

  Vor Modifikation:
  
  :0040B65D 7546              jne 0040B6A5

  Nach Modifikation:

  :0040B65D EB46              jmp 0040B6A5

Wieder verfolgen wir den Code und sehen, da wir jetzt noch zwei Sprnge vor
uns haben und danach die "Incorrect Registration Code" Meldung kommt. Wir
patchen also auch folgenden Vergleich so um, da wir dieser Meldung entgehen.

  Vor Modifikation:
  
  :0040B6BB 7536              jne 0040B6F3

  Nach Modifikation:

  :0040B6BB EB36              jmp 0040B6F3

Wenn wir dann springen, kommen wir zu einem letzen Vergleich, der berprft ob
die eingebene Seriennummer eine TRIAL-SN fr weitere 12 Tage ist. Falls nicht,
wird wieder gesprungen. Wir patchens wieder (mittlerweile msstet Ihr wissen, 
wies aussieht...)

Gut, die Seriennummer wird jetzt in die Poster.INI im Windows Verzeichnis
eingetragen. Doch wenn wir das Proggi starten, erscheint immer noch unser Nag.
Das heit, es wird auch noch am Anfang abgecheckt ob die Seriennummer gltig 
ist oder nicht. Hngen wir uns an den Nag. Wir laden das Ding in einen Resource-
Editor und sehen, da unser Dialog "SHAREWARE" heit. Er ist allerdings nicht
in der DLG-Referenzliste (anscheinend fehler in W32Dasm). Wir suchen also 
manuell nach "SHAREWARE". Es gibt nur eine einzige Referenz im Code, also
setzen wir dort auch unseren Breakpoint. Wie erwartet wird nach dem Start in den
Debugger gebrochen. Wenn wir verfolgen, von wo aus unser Nag-Screen angesprungen
wird, sehen wir, da ein bestimmter Speicherbereich mit 0 und 2 verglichen wird.
Falls er eben 0 oder 2 ist, wird der Nag angezeigt, andernfalls nicht. Die
logische Folgerung ist, da wir diese Speicherposition permanent auf 1 setzen
und so (hoffentlich) alle Nags abschalten.

Wir suchen also nach allen Zugriffen auf unsere Speicherposition, indem wir
einfach manuell nach "[00479AAC]" suchen lassen. Wir finden oftmals, da der
Inhalt in eines der Register geladen wird und dann wieder mit 0 und 2 verglichen
wird. Wenn wir uns diese Funktionen nher ansehen, bemerken wir, da dies die
anderen Nags sind, die das Programm in der Sharewareversion hat. Wir finden 
allerdings auch folgende Vergleiche:

  :00428842 66C705AC9A47000200   mov dword ptr [00479AAC], 0002
  :00428891 66C705AC9A47000200   mov dword ptr [00479AAC], 0002
  :004288D1 66C705AC9A47000000   mov dword ptr [00479AAC], 0000
  :004289AC 66C705AC9A47000000   mov dword ptr [00479AAC], 0000
  :004289B7 66C705AC9A47000300   mov dword ptr [00479AAC], 0003
  :00428A1F 66C705AC9A47000200   mov dword ptr [00479AAC], 0002

Wir setzen an all diese Befehle Breakpoints und starten das Programm. Es wird nur
bei 00428842 und 00428891 in den Debugger gebrochen. Die anderen Befehle werden
nur im Zug der Registrierung ausgefhrt (bei TRIAL-SN's usw) die wir allerdings
ausgehngt haben...

Wir patchen also diese beiden Befehle so um, da 1 in den Speicherbereich gesch-
rieben wird

  Vor Modifikation:

  :00428842 66C705AC9A47000200   mov dword ptr [00479AAC], 0002
  :00428891 66C705AC9A47000200   mov dword ptr [00479AAC], 0002

  Nach Modifikation:

  :00428842 66C705AC9A47000100   mov dword ptr [00479AAC], 0001
  :00428891 66C705AC9A47000100   mov dword ptr [00479AAC], 0001

Wenn wir diese nderungen nun im Hexeditor fixieren und das Proggi starten,
sehen, wir da es weder den Nag-Screen noch den 12xDrucken Nag gibt...

So, das wars schon wieder mit dem zweiten Tutorial von mir, ich hoffe, da ich
euch wieder was lernen konnte und Ihr mit dem Proggi was anfangen knnt. Wenn
ich positiven Response auf die Tuts bekomme, werde ich bei jedem meiner Cracks
einen Schreiben...

                            mnemonix@gmx.de
                  http://mnemonix.cjb.net (ab 1. Juni 1999)

---[ Ende des Tuts ]------------------------------------------------------------
