Digital Cracking Domain presentz:

[DCD]-Tutorial #2: WinNC 1.51

(C) 1999 by BasTardT[DCD]

Hi!

Jetzt, am Tag nach meinem ersten Tutorial mache ich schon mein zweites. Vielleicht aus
langeweile. Vielleicht habe ich auch nur viel zu viel Zeit. Vielleicht denke ich aber, dass die
Welt Hacker braucht - sehr viele Hacker. Und zu diesem Zweck schreibe ich meine Tutorials.

Achtung: Vorkenntnisse aus Tutorial #1 werden teilweise vorrausgesetzt!!

Nachdem ich gestern bei CPU-Idle gedacht habe, dass es nicht billiger geht, bin ich heute schon
wieder enttuscht worden: Bei WinNC 1.51. Dieser Norton Commander Clone meint nmlich,
dass er 
a) das Geld fr seine Registrierung wert ist und
b) sich nur 100 mal starten lsst - Vorrausgesetzt man hat die Shareware-Version installiert.

Lange Rede, kurzer Sinn, fangen wir an! Man nehme
- WinNC 1.51
- W32Dasm 8.9(3)
- WinHex oder einen anderen Hex-Editor
- etwas Zeit

Als erstes legen wir, wie immer, eine Kopie von der EXE-Datei an, in unserem Fall wre das die
WinNC32.exe. Die Kopie kann gleich ins selbe Verzeichnis kopiert werden: es entsteht die Datei
"Kopie von WinNC32.exe". Wow!

Danach starten wir WinDasm und disassemblieren die kopierte Datei. (Disassembler - Open file
to disassemble). Wer hier nur chinesische Zeichen sieht, liest am besten mal mein erstes Tutorial
(http://dcd.mainpage.net), da sind auch noch andere Vorkenntnisse drin.

Als nchstes starten wir die Originaldatei von WinNC, also die winnc.exe. Es kommt ein Fenster mit
dem Inhalt "You have used the shareware version of [blablabla....]". Wir klicken also bei Softice auf
Suchen (die Taschenlampe, 3. Knopf von links) und tippen den Anfang der Fehlermeldung ein ("You
have" reicht dabei vllig). Wir finden zwar eine Meldung, die so anfngt, aber nicht die ist, die wir suchen.
Man knnte zwar auch hier ansetzen um zu cracken, wie das geht, steht in meinem Tutorial #1, das
weitere Wissen dazu steht im Anhang von diesem Tutorial. Der Nachteil wre an diesem Punkt, dass
das Programm zwar noch starten wrde, aber der Nag-Screen, also diese Sharewaremeldung wre immer
noch da.
Also suchen wir weiter. Jetzt finden wir den gesuchten Text. Aber nach genauerem berlegen fllt uns ein,
dass wir an dieser Stelle das gleiche Problem htten wie oben: Der Nag-Screen wre noch da. Tja.
Htten wir vorher darber nachgedacht, htten wir uns viel Arbeit gespart.
Also suchen wir mal nach "registration", weil wir ja eine Vollversion wollen. Vor dem Suchen fahren wir
erst wieder nach ganz oben, damit der ganze Code durchsucht wird.

Genialerweise findet WinDasm gleich als erstes "RegistrationKey". Das klingt doch gut, oder? Wir schauen
mal den Code unter "RegistrationCode" an, ob da irgendwo eine berprfung stattfindet. Wie bereits in meinem
ersten Tutorial erlutert, erkennt man eine berprfung am "j" im Code. "j" steht fr "Jump" und die Zeichen
dahinter fr die Bedingung. Alle diese Befehle stehen unten an meinem Tutorial #2. Aha! Da haben wir ja ein
"je" gefunden, an Adresse 00478DA4. "je" steht fr "Jump if Equal", also Springe wenn gleich. Leider steht
unser Jump etwas zu weit oben um eine abschlieende berprfung zu sein. Also fahren wir etwas runter.

Nanu? Da steht ja noch mal "RegistrationKey". Naja, da kann man sehen, dass die Seriennummer-Errechnung
recht kompliziert ist. Aber das ist uns ja egal. Wir suchen also wieder nach einem Bedingungssprung. GEIL!
Die unterste Zeile bei der zweiten Berechnung sieht so aus:

00478DCF 0F858C000000		jne 00478E61

Wie man unten an diesem Tutorial nachlesen kann, steht "jne" fr "Jump if Not Equal", also "Springe wenn nicht
gleich". Das Programm springt also zun Punkt 00478E61, wenn der bei der Installation angegebene
Name nicht zu der angegebenen Seriennummer passt. Moment mal! Wir haben doch gar keine Seriennummer
angegeben, oder? Also erwartet das Programm einen Namen, der zu KEINER Seriennummer passt. Das
geht nicht, also kommt die Sharewaremeldung.
Wir machen jetzt mit Hilfe unseres HEX-Editors aus "jne" einfach "je", also "Jump if Equal" - wir drehen
den Spie mit der Abfrage quasi rum.
Die Offset-Adresse, bei der wir ndern mssen, steht wie immer unten in der Statusleiste von WinDasm, wenn
die gesuchte Zeile markiert ist. In unsrem Fall ist die Offset-Adresse also 000781CFh, das "h" steht wieder
fr "Hex" und muss weggelassen werden. Den Hex-Editor, ich nehme WinHex, lassen wir ber die 
WinNc32.exe laufen. Jetzt gehen wir in unserem Hex-Editor zur Offsetadresse 781CF (die Nuller vorne knnen
weggelassen werden). Bei WinHex springt man mit Alt+O, bei Hiew mit F5. Wer einen anderen HEX-Editor
benutzt, muss es selber rausfinden.
An der Offset-Adresse steht "0F", an der folgenden Adresse "85". Wie unten im Anhang steht, heit diese
Kombination "jne". Wir machen jetzt "0F 84" daraus, was fr "je" steht, speichern und starten das Programm.
TADAAAAA!!!! Wir haben die registrierte (?) Vollversion ;o)

Achtung: Wer es geschafft hat, dieses Tutorial nachzucracken, ist kein Meistercracker und braucht sich nicht
bei einer Hackergrupper bewerben!!!

-=BasTardT[DCD]=- 1999

Special thanx to tKC!

PS: Andere HEX-Werte, Jumps und deren Erklrungen (Raubkopiert aus tKC's Tutor #1):
_____________________________________________________
Hex:          Asm:      Means:
75 or 0F85    jne       jump if not equal
74 or 0F84    je        jump if equal
EB            jmp       jump directly to
90            nop       no operation
77 or 0F87    ja        jump if above
0F86          jna       jump if not above
0F83          jae       jump if above or equal
0F82          jnae      jump if not above or equal
0F82          jb        jump if below
0F83          jnb       jump if not below
0F86          jbe       jump if below or equal
0F87          jnbe      jump if not below or equal
0F8F          jg        jump if greater
0F8E          jng       jump if not greater
0F8D          jge       jump if greater or equal
0F8C          jnge      jump if not greater or equal
0F8C          jl        jump if less
0F8D          jnl       jump if not less
0F8E          jle       jump if less or equal
0F8F          jnle      jump if not less or equal
