Mai 1999
|
Da Woolf|4V proudly presents...
|
a cracking tutorial on...
|
|
HOW TO CRACK TechFacts
98 2.33 4/2/99
|
|
Benötigte Tools: W32Dasm - Disassembler Hiew 6.02 - Der beste Hex-Editor seiner Art |
Vorwort
|
Hi ho ! Ich weiß inzwischen nicht mehr mein wie vieltes Tut das jetz' is', aber tut auch nichts zur Sache ! Ich schreib' das ganze Teil eigentlich nur, weil mein neuer Freund (°)Blade ein Cracker werden möchte und das mit dem W32Dasm noch nicht ganz rafft ! Also, auf geht's !!
Let's crack !
|
Als erstes wollen wir uns das Proggie mal anschauen ! Klickt auf "About TechFacts" im Help-Menü. Aha ! Ein "Use Reg key"-Button ! Also schnell mal draufklicken und sehen was passiert. First Name, last Name und Registration Key ! Gebt mal irgendwas ein....was ??? "Registration Key Failed" ?? Was habt Ihr erwartet ? :-)
Ok ! Hilft uns schon mal weiter ! Merkt Euch die Fehlermeldung oder schreibt sie Euch auf ! Macht Euch jetzt bitte zwei kopien von der Tekfct98.exe, die eine benennt Ihr in 1.exe um die andere behaltet Ihr als Sicherheitskopie ! Startet jetzt W32Dasm und öffnet die Datei 1.exe (Menü "Disassembler --> Open File to disassemble"). Das ganze dauert jetzt je nach Rechner eine Weile....
Wieder da ??? Weiter geht's !
Das Teil hat jetzt also den ganzen Maschinencode in für uns mehr oder weniger verständlichen Assemblercode umgewandelt. erinnert Ihr Euch an die Fehlermeldung die wir erhalten haben, als wir versuchten uns zu registrieren ??? Die werden wir jetzt mal suchen:
Im Menü "Refs" findet Ihr das Element "String Data References". Klickt da mal drauf ! Ihr bekommt jetzt eine Auflistung von allen Strings die der Disassembler findet. Da das Teil mehr oder weniger alphabetisch geordnet ist, suchen wir mal unter R. Irgendwann solltet Ihr dann den "Registration Key Failed"-String finden...doppelklicken ! Der Disassembler springt jetzt an diese Stelle, von der diese Messagebox aufgerufen wird:
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00479886(C) | :00479997 6A30 push 00000030 * Reference To: user32.MessageBeep, Ord:0000h | :00479999 E8E6D6F8FF Call 00407084 * Possible StringData Ref from Code Obj ->"Registration Key Failed!" | :0047999E B8089B4700 mov eax, 00479B08 :004799A3 E81C8EFCFF call 004427C4 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00479995(U) | :004799A8 8B45FC mov eax, dword ptr [ebp-04] :004799AB E85C7EFBFF call 0043180C :004799B0 33C0 xor eax, eax :004799B2 5A pop edx :004799B3 59 pop ecx :004799B4 59 pop ecx :004799B5 648910 mov dword ptr fs:[eax], edx |
Aha ! "* Referenced by a (U)nconditional
or (C)onditional Jump at Address:" ! Das bedeutet, daß diese
Routine vom Punkt 00479886 aus aufgerufen wird. Im Menü "Goto"
findet Ihr den Menüpunkt "Goto Code Location",den
wir dann
auch anklicken. Jetzt tragen wir die eben gefundene Hex-Adresse ein (00479886)und
bestätigen mit "OK" !
Ihr müsstet jetzt hier gelandet sein:
:00479850 E8F7A6F8FF call 00403F4C :00479855 8D95D8FEFFFF lea edx, dword ptr [ebp+FFFFFED8] :0047985B 8BC6 mov eax, esi :0047985D E86296F8FF call 00402EC4 :00479862 8D95D8FEFFFF lea edx, dword ptr [ebp+FFFFFED8] :00479868 8D45F4 lea eax, dword ptr [ebp-0C] :0047986B E8DCA6F8FF call 00403F4C :00479870 8D45F8 lea eax, dword ptr [ebp-08] :00479873 8B55F4 mov edx, dword ptr [ebp-0C] :00479876 E835A7F8FF call 00403FB0 :0047987B 8B45F8 mov eax, dword ptr [ebp-08] :0047987E 8B55EC mov edx, dword ptr [ebp-14] :00479881 E832A8F8FF call 004040B8 :00479886 0F850B010000 jne 00479997 :0047988C 8D45E8 lea eax, dword ptr [ebp-18] * Possible StringData Ref from Code Obj ->"CJJ" | :0047988F BA549A4700 mov edx, 00479A54 :00479894 E817A7F8FF call 00403FB0 :00479899 A1080B4E00 mov eax, dword ptr [004E0B08] :0047989E 6669182C01 imul bx, word ptr [eax], 012C :004798A3 8D95D8FEFFFF lea edx, dword ptr [ebp+FFFFFED8] :004798A9 0FB7C3 movzx eax, bx |
Ihr müsstet jetzt auf der folgenden Zeile gelandet sein: jne 00479997
Das jne bedeutet "Jump if not equal" = "Springe wenn nicht gleich" ! Also wird hier entschieden ob wir registriert werden oder nicht ! Geben wir den richtigen Code ein würde das Programm einfach weiterlaufen und uns registrieren. Geben wir den falschen Code ein, wird dieser Jump ausgeführt und wir landen bei unserer Fehlermeldung.
Wir müssen also diese Spriunganweisung "ausschalten" !
Ladet also die Original-Exe in den Hacker's View, drückt F4 und wählt "Decode" aus. Danach drückt Ihr F5 und gebt den Offset ein zu dem wir springen wollen. Ihr müsst hierzu den Balken in W32Dasm über die Sprunganweisung bewegen also den jne. In der unteren Leiste seht Ihr dann @Offset 0078C86h. Gebt jetzt also den Offset ein, wobei Ihr die ersten zwei Nullen weglassen könnt. Das kleine h müsst Ihr auch nicht eingeben, es steht für Hex.
Ihr seid jetzt auf der Sprunganweisung ! Wir wollen jetzt das Programm so verändern, daß es an dieser Stelle nichts mehr tut, sondern weiterläuft ! Nichts tun heisst in Assembler nop und hat die Hexnummer 90 !
Also, F3 drücken, um in den Editiermodus zu gelangen und 0F850B010000 mit 909090909090 überschreiben.
Mit F9 abspeichern und F10 das Programm verlassen.TechFacts starten und registrieren !
FERTIG !!! :-)
Tja, das wars dann ! Das Ziel gecrackt und hoffentlich wieder einem Newbie geholfen ! (Ich hoffe Du hast's gecheckt (°)Blade !!!)
Greetz fly out to:
Bond|4v, Kenny|4v, Dracs|4v, Zatan|4v and all other members of 4VOICE, (°)Blade, (°)Predator, Weazel and all I forgot !
Keep on cr@cking !!!!! (Da Woolf|4v - 4/05/1999)