.........................................,,,,,,,,,,;;;;;;;;;;::::::::::W A R N U N G::::::::::;;;;;;;;;;,,,,,,,,,,............................................

              Dieses Tutorial dient ausschließlich Lernzwecken und ist nicht als Anstiftung zu einer illegalen
               Handlung zu  sehen! Sämtliche hier aufgeführten Übungen und Prozeße sollen lediglich das
               Verständnis von Programmierungsmöglichkeiten veranschaulichen und die diversen Möglichkeiten
               eines Schutzes gegen illegale Benutzung einer Software anzeigen.
               Dies kann unter Umständen Programmierern helfen, ihre Schutzmechanismen in eigenen Applikationen
               stark zu  verbessern! Sobald jemand unter Anleitung oder mit dem eigenen Wissensstand die
               Sicherheits-, Registrierungs- oder sonstigen Mechanismen umgangen bzw. ausgeschaltet hat, ist die somit
               funktionstüchtige und ohne Einschränkungen laufende Software SOFORT und ohne VERZÖGERUNG
               vom System zu entfernen.
               Dies beinhaltet die Deinstallation und das Löschen aller Datein und  Registrierungseinträge!

               DIE WEITERE BENUTZUNG GECRACKTER/GEPATCHTER  SOFTWARE IST ILLEGAL
               UND WIRD VOM GESETZTGEBER GEAHNDET!
               DER AUTOR/DIE GRUPPE ÜBERNIMMT KEINE VERANTWORTUNG FÜR JEGLICHE
               HANDLUNGEN  DIE GEGEN GELTENDES RECHT VERSTOßEN!!!

     ......................................,,,,,,,,,,;;;;;;;;;;::::::::::[NeuRom@nCerZ]::::::::::;;;;;;;;;;,,,,,,,,,,.............................................


Target- Programm:
Folder Remarker  1.6
Größe:
300 KB
Verwendete Toolz:
Softice ab 2.32 ; Hview 6.04

               Hersteller: White Elk Software
               Ziel  Prog ->  www.whiteelk.hypermart.net
               Schwierigkeit: Mittel
               Cracked by Maex & Viper Zx
               maked by Viper Zx
 

              Einschränkungen (unregistriert): -Description größe limitiert

              Schutzart:                                 -Serialnummereingabe
                                                              -Gepackt (unbekannter Packer)     Very importend!!!

              Schutzdeaktivierung:                 -Prog schreibt sich bei jedem Start selber zur Vollversion ;-)

               Los geht´s
 

               Prog installiert , recht Maustaste auf eine Datei und auf Eigenschaften gehen jetzt haben wir oben
               einen Neuen Eintrag Description wir gehen drauf und sehen sofort denn Button "Registration"
               und unter About steht Unregistrierte Version.
               Auf Registration gedrückt wir werden aufgefordert einen Namen und denn zugehörigen Code
               einzugeben.Also Name , Faknummer rein und O.K gedrückt nicht´s passiert keine ErrorBox
               Das ist schlecht aber mal sehen Sofice an,  bpx hmemcpy eingeben,  wieder Name, Fakenummer
               O.K gedrückt Softice kommt an und wir drücken solange F12 bis wir im Prog sind das ist
               bei 0370561F (Hinweis: 0370 muß nicht dastehen dort kann bei jedem etwas anderes stehen
               561F ist aber immer gleich ;-) ,das liegt daran das sich das Prog im Speicher verschiebt kommt
               darauf an was gerade geladen ist Norton Commander etc. ,deswegen gebe ich immer nur die letzen
                4 Adressen an)
                Wir sehen auch den test eax,eax  und gehen mit F10 gleich mal hin schauen in das EAX Register
                dort steht eine 0 hmmmmm 0 ist nicht gut deshalb ändern wir den nachfolgenden JZ mal
                ins gegenteil JNZ (mit F10 bis zum JZ dann "a" Enter und die Eingaben machen).
                Wir lassen das Prog laufen  (F5) und sehen der Registration Button deaktiviert wurde COOL wir
                haben´s geschaft. Falsch unter About steht immer noch Unregistrierte Version und der Register
                Button ist aktiviert.
                Also müßen wir in den Call xxxx5621 F8 jetzt Tracen wir mit F10 weiter es kommen ein paar
                Registry Einträge (dort wird der eingegebene Name in die Registry geschrieben)
                Wir gehen weiter kommen an Adresse xxxx5235 an einen Call wenn wir über diesen gehen
                würden, hätte EAX 0 bekommen also muß die Entscheidung in diesem Call getroffen werden
                ob richtige Nummer =Registriert oder Fakenummer =Unregistriert.
                Mit F8 in diesen Call hineien und mal umgeschaut ziemlich übersichtlich :-) 3 JNZ
                immer auf die selbe Stelle, hmmmmmm die Stelle mal angeschaut ein Xor eax,eax was bedeutet:
                setze EAX auf 0 :-( wollen wir ja nicht wenn wir alle JNZ umschreiben würden könnte es gehen
                HALT es geht noch einfacher wir schreiben den ersten JNZ so um das er auf die Adresse
                xxxx6ACA  springt dort steht DER mov eax,00000001 dieser setzt EAX auf 1 =Registriert
                So denn JNZ bei xxxx61A2 so umgeschrieben das er auf   xxxx6ACA springt.
                F5 Prog laufen lassen Okay der Registration Button ist deaktiviert (hatten wir aber schon ;-))
                wir klicken auf About JEPPPPPPIIIIII unser Name steht drin und der Register Button ist auch
                deaktiviert.Ebenso ist die limitation der Description´s aufgehoben.

                Jetzt schnell die folderem.dll mit Hview gepatcht fertig AHHHHHHHHHHHHHHHHHHHHHHHH
                unsere Adresse wird nicht gefunden WARUM??? WARUM??? WARUM???

                Die DLL ist gepackt SCHEI...
                Okay nehmen wir halt ProcessPatcher :-) AHHHHHHHHHHHHHHHHHHHHHHH
                geht nicht es ist eine DLL die kann er nicht Patchen (auch wenn er´s könnte wäre bei dem
                Prog ein bisschen sinnlos ;-),da es ja über Eigenschaften aufgerufen wird und sich im Speicher verschiebt)
 

                Also bleibt nur noch die Serial zu Sniffen SCHEI... ist das schwer!!!
 

                Keine Panik es gibt noch eine Möglichkeit "Von Hinten durch die Brust ins Auge" ;-)

                Wir lassen sich das Prog bei jedem Start selber zur Vollversion umpatchen!!!
 

                Uns so geht´s
 

                Als erstes müßen wir das Prog am Entry Point (wo es startet) breaken und das machen wir so,
                Prog in Hview laden in denn Decode Modus gehen und F8 (Header) drücken dann F5 (EntryPoint)
                und wir stehen am Entry Point wir sehen eine 60 diese erstezen wir durch CC (Int 3).
                Jetzt Softice aufrufen und bpint 3 eingeben.
                Folder Remarker starten rechte Taste Eig.....
                BUMMMMMM Softice breakt wir geben d eip ein um im oberen Fenster denn EntryPoint angezeigt
                zu bekommen wir sehen unser CC doppelklick mit der Maus auf selbiges und schreiben wieder unsere 60 hin..
                Mit F10 Zeile für Zeile abarbeiten lassen bis wir bei xxxx8039 stehen nach diesem Call ist das Prog
                im Speicher entpackt ;-).
                Der nachfolgende mov ist unser, Prog ist entpackt jetzt müßen wir unsern Patch unterbringen daszu
                suchen wir uns eine Freie Stelle im Programm mit Hview.
                Hview an, an unseren mov springen (0041803E unter Hview) und jetzt abwärt´s nach einer (großen) Freien
                stelle Suchen am Ende des Prog´s finden wir etwas bei Adresse B92F <-Offset Adresse wenn man F3 bei
                Hview drückt).
                Also ändern wir unsern mov bei 0041803E zu eine JMP 0000B92F (sprung zur freien Stelle)
                dort schreiben wir unseren Patch (Crack) das geht folgendermaßen:

                Normalerweise würde man jetzt mov b,[03F161A3],026 (Hviewschreibweise) schreiben
                diese Zeile bedeutet ändere denn Sprung an 03F161A3 von xx zu 26 nach Adam Riese
                vom xor eax,eax zum mov eax,00000001.

                 DAS FUNKTIONIERT HIER ABER NICHT!!! gell  Maex ;-)

                 Da sich das Prog im Speicher immer verschiebt ist die ganze Adresse jedesmal anders
                 die ganze Adresse NEIN ein kleiner Teil bleibt gleich der Offset die letzen 4 Stellen.
                 Nur der vordere Teil ändert sich immer z.B 03F1 oder 03E6 etc.
 
                 Das Prog arbeitet so, es ist im Speicher entpackt nach dem Call xxxx8039
                 und an stelle xxxx804F steht ein JMP EAX und in EAX steht IMMER
                 die aktuelle Speicheradresse wo er hinspringen muß.
                 Jetzt müßen wir ausrechnen wie weit von dieser Adresse unsere
                 Änderung (sprich der Crack) entfernt ist.
 
                 Wir nehmen eine ungepatchte Version nur mit CC (Int 3) dann
                 nehmen wir Softice gehen mit F10 über denn Call xxxx8039
                 bis zum popad jetz steht die Aktuelle Sprungadresse für nachfolgenden JMP EAX
                 im Register EAX diese schreiben wir uns auf.
                 F5 Prog laufen lassen und die selbe Prozedur wie am Anfang des Tutor´s beschreiben durchführen
                 bis wir an unserer Änderung (Crack) stehen das ist bei xxxx61A2
                 diese Adresse schreiben wir uns ebenfalls auf und jetzt rechnen wir die differenz zwichen beiden aus.

                 das ist z.B. 03FA1000    ; Sprungadresse EAX
                                  03FA61A3    ;Crackadresse
                 ergibt:51A3

                 Wir müssen also zu EAX IMMER 051A hinzufügen und unser Crack erfolgt immer an
                 der richtigen Stelle!!!
 

                 Listing Hview:
 
Offset   AE3E    Jmp 0000B92F
 
 
 

Offset   B92F    mov b,[eax][000051A3],026      ;ändert unsern Sprung statt zu xor eax,eax zu mov eax,00000001   
                                                                             addiert zur jeweils aktuellen Speicheraddresse die in EAX ab hier
                                                                             drinsteht 51A3 damit schlägt unser mov b, immer an der RICHTIGEN
                                                                             Stelle auf ;-)
                         mov  eax,[ebp][00043DE03]      ;die Zeile die wir durch unsern JMP zur freien Stelle überschrieben haben
                         add eax,[ebp][00043DE17]        ;nachfolgender Code
                         mov [esp][00001C],eax
                         popad
                         jmp eax                                       ;dieser JMP springt dann ins Hauptprogramm im Speicher
           .
 
 

                                     Fertig, Prog wird IMMER (bei jedem START) zu einer Vollversion!!! ;-)
 

Ich grüße alle Mitglieder von NeuRoM@nCerZ ,Torn@do und natürlich Maex der einen großen Teil zum Cracken
von Folder Remarker beigetragen hat.

Viper Zx
[NeuRoM@nCerZ]
E-Mail: Viperzx00@gmx.net

 
GCCNavigator
ForumEssaysCrackMesToolsLinx
KontaktMainUpdates