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

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


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


Programm: 3DMark99 (Benchmark)
Tools: W32Dasm, Hexeditor
Cracker: tIMELESS
Zeit: hmmmm, sagen wir 15 Minuten


Und los gehts...
~~~~~~~~~~~~~~~~

Wir schauen uns natrlich erst einmal das Programm an, das wir cracken
wollen: 3DMark99, eine Grafikbenchmark fr 3D Karten, sehr genau,
sehr schn, sehr neu (OK, fast neu!).....also eine Herausforderung.
So, unsere Aufgabe ist es nun, Stellen zu finden, bei denen wir 
ansetzen knnen.
Nach dem Start schauen wir uns mal die Programmleiste an. Kein
"Unregistered" o.. in Sicht, dafr aber etwas anderes:
"3DMark 99 Lite". Aha, wenn es eine "Lite"-Version gibt, dann gibt
es sicher auch eine "Pro"-Version! Das halten wir fest und suchen
weiter. Unter "Help"-"About 3DMark 99" finden wir: 

Registered to:     Unregistered

Aha, ein Sharewarehinweis. Diesen String finden wir sicher auch 
im Dasm wieder....

Sobald wir eine neue Benchmark erstellen wollen und die einzelnen
Test selektieren wollen kommt die freundliche Nachricht, dass man
in der "Lite"-Version nur die Standardwerte nutzen kann und dass man
doch bitte die "Pro"-Version kaufen solle um diese Werte verndern
zu knnen. Aha, das msste man doch eigentlich zur "Pro"-Version
machen knnen. 


cR4cK1ng (<---c00ler Crackerslang ;-) ) :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Wir machen das bliche, disassemblieren im W32Dasm. Sobald das
fertig ist ffnen wir die String Data Reference und fangen an
zu suchen.........

1.)"Unregistered":
~~~~~~~~~~~~~~~~~~

Diese Nachricht finden wir im oberen Drittel der SDR. Wir springen
an den Punkt, machen nochmal einen Doppelklick um zu testen, ob es
noch eine Entsprechung im Programm gibt......Nein, gut. Dann wenden
wir uns nun mal dem Code zu.

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0044719(C) <----Aha!
|

*Possible Reference to String Resourc ID=64602: "Unregistered"

:0044A72D 68A2F00000        push 0000F0A2
      ......                    ...
      ......                    ...

Der Conditional Jump von 0044A719 sieht folgendermassen aus:

      ......                    ...
:0044A717 3C01              cmp al, 01
:0044A719 7512              jne 0044A72D <--das isser
:0044A71B 6838D54B00        push 004BD538
:0044A720 8D8E2801000       lea ecx, dword ptr [esi+00000128]

* Reference To: MFC42.MFC42:NoName0358, Ord:035Ah

:0044A726 E85D980400        Call 00493F88
:0044A72B EB1B              jmp 0044A748 <----OHO!

Tja, damit ist das eigentlich klar, oder?
Offset vom jne rausschreiben (000049B19), Hexedit, 9090 drberschreiben,
speichern, ausprobieren, JUHUU, da steht jetzt nur noch:

Registered to:        

Das soll uns vorerst einmal reichen. Wir wagen uns ans nchste.


2.)Von der "Lite" zur "Pro":
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Das wird der wichtigste Teil. Wir wollen die "Lite"-Version also
zur "Pro"-Version machen. Zuerst einmal suchen wir die dazugehrige 
String Data Reference (den Text der Messagebox merken). Die finden
wir natrlich auch, sogar zwei!!! ...zuerst aber...

      ......                    ...
:00450793 84C0            test al, al
:00450795 752F            jne 004507C6 <---der berspringt die SDR
:00450797 6A00            push 00000000
:00450799 6A40            push 00000040

* Possible Reference to String Resource ID=61603: "3DMark 99 Lite can only be run with the default settings.
 
:0045079B 68A3F00000      push 0000F0A3
       ......                   ...

Da der jne diese Stelle einfach berspringt, muss dem Programm gesagt
werden, dies immer zu tun. Das machen wir mit einem EB (einem Unconditional Jump)
Also mssen wir nur den Offset 0004FB95 dahingehend verndern.

Doch bevor wir das tun wagen wir uns erst noch an die zweite Einschrnkung
heran (in der SDR nur eine Zeile unter der gerade bearbeiteten).
Da sieht der Code fast gleich aus:

:00450943 84C0            test al, al
:00450945 752F            jne 00450976 <--wie oben!
:00450947 6A00            push 00000000
:00450949 6A40            push 00000040

* Possible Reference to String Resource ID=61604: "3DMark 99 Lite can only be run with the selected default tes"

:0045094B 68A4F00000      push 0000F0A4
      ......                   ...
 
Noch irgendwelche Fragen? Das ist genauso wie oben! Wieder mssen
wir den jne in einen jmp verndern. Also Offset rausschreiben (0004FD45)
und im Hexedit mit EB patchen. Bei der Gelegenheit machen wir auch
noch den anderen Nag (s.o.) weg. Und schon haben wir die "Pro"-Version.
...wenigstens von den Funktionen.

Geben wir uns damit schon zufrieden? NEIN!
Denn: in der Programmleiste steht ja noch "Lite", igitt, das ist
ja gar keine Wrdigung unserer Arbeit! Das "Lite" muss weg.


3.)"Die Krnung":
~~~~~~~~~~~~~~~~~

Im Dasm gehen wir dieses Mal nicht in die SDR sondern in die Textsuche.
Im Textfeld geben wir "Lite" ein und beginnen die Prozedur. Erste
Reference: irgendwas mit der Auflsung -> uninteressant. Zweite
Reference: OHO! 

:004496C0 E8FBC4FBFF       call 00405BC0
:004496C5 3C01             cmp al, 01
:004496C7 7507             jne 004496D0 <---wo geht der denn hin?

* Possible Reference to String Resource ID=61610: "Pro"

:004496C9 68AAF00000       push 0000F0AA
:004496CE EB05             jmp 004496D5

* Referenced by an (U)nconditional or (C)onditional Jump at Address:
|:004496C6 (C)

* Possible Reference to String Resource ID=61611: "Lite"

         ......                ... 

Juhuu, das muss es sein. Wir noppen einfach den jne weg, dann springt
das Programm automatisch in die "Pro"-Prozedur. Also editieren wir
den Offset 00048AC7 mit 9090 speichern, starten 3DMark 99 Lite ???
NEIN: 3DMark 99 Pro


Wir habens geschafft

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

Fragen, Anregungen, Kritik, Lob: tIMELESS99@gmx.net  








