                ALAZON                                 [Zeilenumbruch abschalten!]
       +++ cRacKinG GroUp +++
                 1999

             ...cobolD...



             TUTORIAL3 [XL]
  ...................................
  REG-Key hacken fr ECHTE Anfnger
  


..(( Objekt ))..
     

CDRCue CuesheetEditor 1.0a
(www.dcsoft.com)


..(( Equipment ))..
     

Soft-ICE v3.2+


..(( Here we go ))..
     
[Die Zeilen die mit // Anfangen sind fr ECHTE Anfnger]

Das Tutorial ist zwar fr Anfnger gedacht, trotzdem solltet ihr
wenigtens ein bichen Ahnung von Assembler haben (wenn ihr wit
was ein CALL ist oder ein JMP,JNE etc. dann reicht mir das erst
mal).

//Zu erst einmal mssen wir Soft-ICE bichen optimieren: ffnet dazu
//die Datei 'winice.dat' [bei WinNT ist die Datei in 
//x:/winNT/system32 versteckt] und entfernt alle ';' vor den EXP (ganz unten).
//Anschlieend lscht ihr die INIT-Zeile und schreibt ne neue die wie folgt
//aussieht: 
//
//INIT="wl;code on; altscr off; lines 25; wc 11; wd 5; wr; faults off; x"
//[neu-booten nicht vergessen]

Dann startet euer SoftICE und los gehts!
Zuerst einmal ffnen wir den CuesheetEditor und gehen auf die Option 'Unlock'.
Gebt einen Benutzernamen ein (benutzt cobolD) und verndert am 'Personal Unlock Code' erst mal gar nix. Freundlicherweise zeigt uns dcsoft schon das Format an in dem der 'PUC' eingegeben
werden muss (das spart uns ein bisschen Arbeit, werdet ihr spter noch sehen).
Klickt jetzt NICHT auf 'Unlock'!, sondern holt euch Soft-ICE auf den Screen (mit STRG-D).
//Wenn ihr euch jetzt etwas fremd fhlt dann ist das normal.
//Ganz kurz zur Erklrung: Ganz oben wird der Status der einzelnen Register
//und der Flags angezeigt (ist fr uns jetzt unwichtig), einen Block
//darunter ist der Inhalt der momentanen Speicheradresse, noch einen darunter 
//der aktuelle Programmcode in Assembler (hnlich wie im W32 Disassembler) und
//ganz unten die Befehlszeile.
Um den KEY rauszukriegen mssen wir jetzt zuerst einen breakpoint auf
eine Funktion setzen, die den Inhalt des Textfelds ausliest. Die blichen Funktionen
sind:

'GetDlgItemTextA' 
'GetWindowTextA' 

Also schreiben wir:

bpx getdlgitemtexta  und
bpx getwindowtexta

//Nur kurz zur Erklrung: breakpoint bedeutet, dass sobald ein Programm diese Funktion
//aufruft Soft-ICE die Funktion unterbricht/anhlt und sich dazwischenschaltet, sprich
//die Funktion 'breakt'. Mann kann breakpoints auf so ziemlich alles setzen.

Nun verlassen wir Soft-ICE wieder mit STRG-D und klicken auf 'UNLOCK'. Wie erwartet erscheint
der Soft-ICE screen und unten steht folgende message: "break due to BPX USER32!GetWindowTextA".
Jetzt brauchen wir die breakpoints nicht mehr und knnen die mit 'bd *' deaktivieren. Um jetzt
weiterzukommen drcken wir F12, dass bringt uns zu dem Programm dass diese Funktion aufgerufen 
hat ... das machen wir solange bis unten irgendwann als Programm "CDRCue" angegeben wird. Jetzt
sind wir an der richtigen Stelle. Im Assembler-Fenster kann man nun folgendes erkennen:

call [User32!GetWindowTextA]   <--- unsere gebreakte Funktion
mov  ECX, [EBP+10]             <--- unwichtig
push FF                        <--- unwichtig
call 00432F1F                  <--- erstellt den passenden Key zu unserem Namen
JMP  0043DC61                  <--- jumpt mit dem erstellten Key im Gepck zu Adresse 0043DC61,
...                                 etwas spter wird der ECHTE Key mit unserem, den wir eigegeben
                                    haben verglichen

So ich hab euch schon ein bisschen Arbeit abgenommen und mir die CALLs und JMPs angeguckt:

Bei Adresse 00432F1F (die die gecallt wurde) wird der passende Key zu unserem Namen generiert und in einem Register (in dem Fall ECX) abgespeichert.
//Stark vereinfacht gesagt: Register sind so ne Art Gedchtnis des Prozessors, die wichtigsten //beim REG-Key hacken sind EAX, EBX, ECX, EDX (ESI, EDI, EBP, ESP)
Der erstellte Key befindet sich nun im Register ECX, der call ist beendet und es wird zu 
0043DC61 gejumpt. Dort passiert dann einiges (jetzt nicht wichtig) und irgendwann wird dann
unser Key mit dem passenden Key verglichen.
Ihr werdet euch jetzt sagen: toll, wenn der passende Key im Register ECX sitzt muss ich 
dort ja nur noch nachgucken. Und recht habt ihr. Ihr knnt den CALL berspringen, weil ich
euch die ganze Arbeit schon abgenommen hab.
//Mit F8 geht man eine Zeile weiter, mit F10 geht man auch eine Zeile weiter, jedoch berspringt
//man die CALLs (also die werden zwar ausgefhrt, aber wir sehen den Ablauf nicht.) Benutzt
//hier also F10. 
Der CALL wurde im Hintergrund also ausgefhrt und der KEY ist im ECX drin. Um das Register
auszulesen msst ihr folgendes eintippen:

d ECX

Nun erscheint im auf der rechten Seite im speicher-fenster ziemlich wirres Zeug .. jetzt
msst ihr ein bisschen hin und her scrollen (nach unten) bis ihr auf etwas stot das wie ein KEY aussieht. Ihr werdet den Namen sehen den ihr eingetippt habt (cobolD), sowie den KEY den ihr
eingetippt habt (bzw. den unvernderten KEY). Irgendwann seht ihr jedoch folgenden KEY: 29ba5ddb-6225d520-b08ef088-3046a847 ... BINGO! KEY notieren und das wars auch schon.

Ich will euch nur kurz erklren warum dcsoft uns einen kleinen Gefallen getan hat:
Wenn ihr im Assembler-Fenster ein bichen nach oben scrollt, seht ihr direkt ber unserer
'GetWindowTextA'-Funktion folgendes:

CALL [User!GetWindowTextLengthA]   <-- Funktion die die richtige Lnge des 'PUC' checkt
 
Wir htten also erstmal in den call gehen mssen um rauszufinden welche Lnge der Key
haben soll. Bestimmt wird auch irgendwo noch das richtige Format des KEYs gecheckt, hab
ich aber nicht gesehen. Alles in allem hat uns dcsoft die Sache doch sehr leicht gemacht.

Das solls gewesen sein. Viel Spass beim cracken!



   cobolD     (cobold.alazon@gmx.de)



Bei Fragen mailen (nich bei jedem kleinscheiss bitte) und wenn ihr FEHLER entdeckt!

...................................................................................

PS.noch ein kleiner trick von mir, den man bei manchen Programmen anwenden kann:
Wenn ihr euch das Leben leichter machen wollt, dann geht wie folgt vor: tipt
einen namen ein und und als KEY irgendwas was ihr euch merken knnt z.B.
1234321 ... setzt dann die bpx (etc.) und wenn ihr dann in der Funktion drin seit
tipt folgendes ein:

s 0 l ffffffff '1234321'

Das sucht die Zahl 1234321 im Speicher ab ... wenn die gefunden wird seit ihr schon mal
an der Stelle wo der falsche KEY aufbewahrt wird ... meist befindet sich der echte KEY
ganz in der nhe, ihr msst im speicher blo ein bichen hin und her scrollen ...
der trick funktioniert aber nur bei billigen shareware-programen ohne richtigen schutz ...
aber probierts mal aus ...

                                          ALAZON
                                  +++ cRacKinG GroUp +++
                                           1999

...................................http://come.to/alazon...............................