

Moin,
nachdem ich auf dem Board immer wieder Fragen nach deutschen Tutorials fr Anfnger gelesen habe, habe ich mich nun doch einmal aufgerafft und schreibe jetzt eins. Um eines schon mal vorwegzunehmen: !Dieses Tutorial ist fr Leute die echt noch keine Ahnung vom cracken haben!, also mchte ich bitte keine mails bekommen in denen mir jemand erzhlt das man das auch anders machen kann oder man auch SofIce htte benutzen knnen. Das weiss ich selbst! Ich weiss auch, dass es schon einige deutsche tutorials gibt, aber die scheinen ja nicht alle zu kennen, wenn es immer noch Anfragen gibt! Wie gesagt dieses tutorial ist fr ANFNGER.

Genug geredet, jetzt gehts los.
Also, als erstes mal die tools die ihr auf jeden Fall braucht:
1)einen Disassembler, der das fr uns Programm "zerlegt". Ich benutze    W32dsm Version 8.9.
2)einen Hexeditor, viele benutzen Hiew, aber der ist mir zu umstndlich   Ich benutze den Hexworkshop.

Wenn ihr schon beim downloaden seid knnt ihr euch auch gleich, soweit ihr kein Pascal oder so knnt, einen Patchengine saugen (z.B. Wupatch).

Natrlich knnt ihr auch einen anderen Disassembler benutzen, aber ich werde mich immer auf W32dsm beziehen.
Jetzt natrlich die Frage was wir cracken. Hmmmmmm. Nehmen wir mal TwinExplorer 1.1. Warum? Weil er mir grad einfllt und relativ einfach zu cracken ist. Ihr knnt ihn euch unter http://www.pepsoft.com saugen.


Okay, jetzt installiert ihr das proggie und startet es. Und was mssen wir da sehen? Durch eine wunderschne Laufschrift werden wir daran erinnert, dass das proggie eine unregistrierte Version ist und daneben sehen wir den Button der uns dahin fhrt wo man Namen und serial eingeben muss. Als erstes geben wir mal einen Dummy/-code und -namen ein. Und klicken auf OK. Das Programm gibt jetzt die Meldung "Invalid registration Password." aus. okay diese Meldung ist wichtig, also merken wir sie uns. Jetzt machen wir das Programm zu und starten W32dsm. Dort gehen wir auf Disassembler\Open file to disassemble... und whlen die Datei "twinx.exe".
Wenn ihr W23dsm das erste erste mal benutzt seht ihr jetzt nur lauter Wingdings-Zeichen, um das zu ndern, geht auf 
"Disassembler\Font\Select font" und whlt eine vernnftige Schrift aus.
Danach klickt ihr auf "Disassembler\Font..\Save Default Font" um die Schriftart zu speichern.

Jetzt seht ihr eine ganze Menge (noch) unverstndlichen Text.
Aber wir wissen ja schon wonach wir suchen mssen, nmlich nach der Meldung "Invalid registration Password". Dazu klicken wir in der Symbolleiste auf den Button links neben dem Drucker-Button. Darauf steht "Strn Ref". Das Men, dass ihr jetzt seht zeigt alle Strings im File an, die der Programmierer benutzt hat. Jetzt scrollen wir runter bis "I" und suchen dort den String "Invalid registration Password." und doppelklicken darauf. Der Text ist nun zu dieser Stelle gesprungen:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0045FEDB(C)
|
:0045FFC4 6A00                    push 00000000
:0045FFC6 668B0D30004600          mov cx, word ptr [00460030]
:0045FFCD B202                    mov dl, 02

* Possible StringData Ref from Code Obj ->"Invalid Registration Password."
                                  |
:0045FFCF B8A4004600              mov eax, 004600A4
:0045FFD4 E84BE8FCFF              call 0042E824
:0045FFD9 33D2                    xor edx, edx
:0045FFDB 8B86C8010000            mov eax, dword ptr [esi+000001C8]
:0045FFE1 E81E4AFBFF              call 00414A04

Okay, das ist die Meldung wenn es nicht geklappt hat, logischerweise muss es dann aber auch eine Meldung geben die einem sagt das man registriert ist (diese Meldung soll uns aber erstmal nicht interessieren). Aber irgendwo muss es dann ja einen punkt geben an dem sich entscheidet ob man registriert ist oder diese Meldung zu sehen bekommt. Also liegt es doch nahe diesen Punkt zu finden und zu schauen, wie man ihn verndern muss. Dazu schauen wir uns mal den Abschnitt genauer an und sehen, dass ein Stck ber der Meldung "Referenced by a (U)nconditional or (C)onditional Jump at Address:|:0045FEDB(C)" steht. Dieser Text sagt uns von wo die Meldung aufgerufen wurde.
Also gehen wir mal zur Stelle 0045FEDB. Dort sehen wir folgenden Code:



* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0045FE62(C)
|
:0045FEA6 8D95F4FCFFFF            lea edx, dword ptr [ebp+FFFFFCF4]
:0045FEAC 8B86C8010000            mov eax, dword ptr [esi+000001C8]
:0045FEB2 E81D4BFBFF              call 004149D4
:0045FEB7 8B85F4FCFFFF            mov eax, dword ptr [ebp+FFFFFCF4]
:0045FEBD 50                      push eax
:0045FEBE 8D85F8FCFFFF            lea eax, dword ptr [ebp+FFFFFCF8]
:0045FEC4 8D95FEFDFFFF            lea edx, dword ptr [ebp+FFFFFDFE]
:0045FECA E8C537FAFF              call 00403694
:0045FECF 8B95F8FCFFFF            mov edx, dword ptr [ebp+FFFFFCF8]
:0045FED5 58                      pop eax
:0045FED6 E81D39FAFF              call 004037F8
:0045FEDB 0F85E3000000            jne 0045FFC4     <------HIER IST ES.
:0045FEE1 8BC6                    mov eax, esi
:0045FEE3 E8E0060000              call 004605C8
:0045FEE8 6A00                    push 00000000
:0045FEEA 668B0D30004600          mov cx, word ptr [00460030]
:0045FEF1 B202                    mov dl, 02

* Possible StringData Ref from Code Obj ->"TwinExplorer is now registered. "
                                        ->"Thanks a lot!"
                                  |
:0045FEF3 B83C004600              mov eax, 0046003C
:0045FEF8 E827E9FCFF              call 0042E824
:0045FEFD 8D95F4FCFFFF            lea edx, dword ptr [ebp+FFFFFCF4]
:0045FF03 8B86C0010000            mov eax, dword ptr [esi+000001C0]
:0045FF09 E8C64AFBFF              call 004149D4
:0045FF0E 8B95F4FCFFFF            mov edx, dword ptr [ebp+FFFFFCF4]
:0045FF14 B8E4774600              mov eax, 004677E4
:0045FF19 E8A636FAFF              call 004035C4
:0045FF1E 33D2                    xor edx, edx
:0045FF20 8B86AC010000            mov eax, dword ptr [esi+000001AC]
:0045FF26 E8054AFBFF              call 00414930
:0045FF2B C605DD77460001          mov byte ptr [004677DD], 01
:0045FF32 A1D8774600              mov eax, dword ptr [004677D8]
:0045FF37 8B80B8010000            mov eax, dword ptr [eax+000001B8]
:0045FF3D 33D2                    xor edx, edx
:0045FF3F E8EC49FBFF              call 00414930

Kurz darunter sehen wir auch die Meldung die man bekommt, wenn die Registrierung erfolgreich war.
An der Stelle 0045FEDB steht ein "jne", das heisst "Jump if not equal"
Also wissen das wenn der Wert, der aus Serial und Name berechnet wird  ungleich zu irgendetwas ist springt das Programm zur Meldung "Invalid registration Password" und wenn der Wert gleich zu irgendetwas ist wird der Befehl ignoriert und man kommt zur Meldung "TwinExplorer is now registered. Thanks a lot."
Was liegt jetzt nher als das Programm so zu ndern, dass es zur Fehlermeldung springt wenn der Wert gleich zu irgendetwas ist.
Dazu muss man das "jne"(jump if not equal) nur in ein "je"(jump if equal) ndern.
Dazu laden wir Twinx.exe in den Hexeditor und bewegen den blauen Balken in W32dsm genau ber das "jne", jetzt sollte der Balken grn sein.
Ganz unten sieht man jetzt:
"Line:215223n Pg 3032 of 3175 Code Data @:0045FEDB @Offset 0005F2DB in file: Twinx.exe"
Uns interessiert nur der offset 0005F2DB. Zurck im Hexeditor gehen wir nun zu diesem Offset, wo ir folgendes sehen solltet:

0005F2D0  95F8 FCFF FF58 E81D 39FA FF0F 85E3 0000
                                     ^^^^^
Fr uns ist nur der "unterstrichene" Teil wichtig. Dort steht "0F85"
das ist der Befehl "jne" in Hexcode. Um ihn in "je" zu ndern musst du die "85" in "84" ndern, so dass anschliessend "0F84" dasteht.
Dann die Datei unter einem anderen Namen (z.B. "crk.exe") speichern, schliesslich wollen wir das Original noch behalten falls es nicht klappt, und starten das Programm. Wieder auf "Click here to Order" gehen und euren namen und irgendeine Serial eingeben.
UND???
BINGO!!
Herzlichen Glckwunsch du hast dein erstes Programm gecrackt!


Okay jetzt noch ein paar andere Sachen:
"je" kann auch 74 in Hexcode sein.
"jne" kann auch 75 in Hexcode sein.

Es kann durchaus vorkommen das ein Programm beim nchsten Start nicht mehr registriert ist, das liegt daran, dass man zwar das Programm veranlsst hat zu glauben es sei registriert, aber es diese Information nicht irgendwo, z.B. in der Registry, abgelegt hat.

Wenn ihr noch Fragen habt schickt 'ne mail an ABEX98@gmx.net.

Okay, das war's viel spass beim cracken.
cu,
ABEX [GCG]










