#1  
12.08.10, 23:42
mafia97
Vollwertiger Member
 
Registriert seit: Jun 2010
Beiträge: 19
Thanks: 0
Thanked 0 Times in 0 Posts

Der Bereich war so leer, da wollte ich mal ein Einstieg-Tutorial schreiben





Vorwort

Ihr kennt das vielleicht: Ihr wollt in das Thema einsteigen und werdet erst mal mit einem Haufen Theorie zugeschüttet (Das geht von verschiedenen Zahlentypen bis hin zu dem Aufbau einer PE-Datei). Dieses Tutorial soll das völlige Gegenteil sein. Ich werde ganz direkt anfangen und die Theorie so kurz wie möglich halten (ohne geht es natürlich nicht).

Sollte ich evtl. noch weitere Folgen machen, wird natürlich auch nach und nach immer mehr Theorie folgen.

Wer also nicht sehr praxisseitig und auf Deutsch zu dem Thema etwas lernen will, dem empfehle ich lenas-Cracking-Tutorials. Sie sind auf Englisch und mit viel Theorie. Dafür sind sie viel umfangreicher. Ich habe vieles aus diesen Tuts gelernt, jedoch fand ich es nicht unbedingt leicht. Daher wollte ich einen leichten Einstieg und evtl. Fortsetzungen schreiben.



Voraussetzungen

Also im Voraus: Das Cracken (oder allgemein Reverse Engineering) ist meiner Meinung nach das genaue Gegenteil des Spreadens. Es ist geistig ansprechende und kreative Arbeit und hat nichts mit Fleißarbeit zu tun. Ihr müsst kreativ sein und nachdenken - Im Gegensatz zum Spreaden.

Daher sind Grips & Kreativität unablässig.

Des Weiteren braucht ihr einen guten Debugger. Er wird unser wichtigstes Hilfsmittel sein. Ich benutze OllyDbg 1.10.

Ich habe ihn für euch geuppt inklusive meinem Beispiel-Programm (VT siehe unten), einer Ini-Datei, welche für eine übersichtliche Formatierung sorgt und einer speziellen Zusatz-Hilfe-Datei: http://rapidshare.co...ing-Tut-001.rar

Das Passwort ist gemäß Boardregeln 1.g): “www.Sceneground.info“

Das Programm kommt von der Herstellerseite, deshalb spare ich mir mal den VT-Link. Hinzugefügt habe ich nur Hilfe- und Ini-Datei. Wer mir nicht glaubt, lädt ihn sich hier: http://www.ollydbg.de/odbg110.zip



Es geht los!

Wir starten (für manche zum ersten Mal) unseren Debugger. Evtl. kommen euch jetzt ein paar Fehlermeldungen entgegen. Eine dafür, dass ihr das Programm mit Administrator-Rechten starten sollt und andere, weil ein paar Pfade nicht existieren. Euch wird gesagt, wo ihr den Pfad zu OllyDbg einstellen müsst (ich selbst weiß leider nicht mehr, wo ich das damals machen musste). Nachdem ihr das gemacht habt, nehmen wir noch eine weitere Änderung vor: Wir klicken

auf „Help“->“Select API Help File“. Dann geht ihr in das Verzeichnis, in das ihr OllyDbg installiert habt und wählt die „WIN32.HLP“ aus. Wenn wir bestimmte Befehle nicht verstehen, können wir sie uns anzeigen lassen.

Nun haben wir unseren Debugger eingerichtet. Als nächstes öffnen wir meine Beispielprogramm.exe, indem wir auf das Ordner-Symbol klicken. Nun habt ihr einen Haufen Assembler-Code vor euch.

In der ersten Spalte seht ihr die Offsets. Daneben steht das Ganze im Hex-Code. Eine Spalte weiter seht ihr den Assembler-Code. In der letzten Spalte stehen Kommentare, die das Verstehen der Befehle leichter machen.

Vertraut machen mit dem zu crackenden Programm

Bevor wir auch nur einen Schritt mehr im Debugger machen, starten wir zuerst das Programm ganz normal in Windows. Ihr seht nun ein kleines Fenster, in dem ihr zur Eingabe einer Pin aufgefordert werdet. Abhängig von der Richtigkeit kommt entweder eine Meldung, dass das Passwort leider falsch sei und das Programm beendet sich. War die Pin richtig… Naja ihr werdet sehen.

An dieser Stelle merken wir, dass ich beim Programmieren absichtlich einen törichten Fehler gemacht habe: Beim Falsch-Zustand wird eine Messagebox mit einem festgelegten String ausgegeben. Das werden wir uns jetzt zu Nutze machen…



Analyse des Programms

Wir gehen wieder zu OllyDbg. Wir haben ja gerade eben gesehen, dass eine Meldung mit einem Text ausgegeben wird. Daher klicken wir jetzt rechts in den Assemblercode rein und

wählen: „Search For“-> „All referenced text strings“. Es öffnet sich jetzt ein weiteres Fenster. In der Spalte der Text-Strings fallen uns 2 Einträge auf:

ASCII „Du hast es geschafft!“

ASCII „Leider falsch!“

Wir klicken doppelt auf den ersten Eintrag und landen wieder im Assembler-Code. Folgende Zeile ist markiert:

MOV EDX,Beispiel.004506D0

Der Assembler-Befehl MOV (=move=bewegen) bedeutet, dass der Inhalt der

Quelle „Project1.004506A8“ (Also unser String) in das Register EDX kopiert wird.

Wir werden ab hier rückwärts arbeiten und ein paar Schritte zurückgehen. Uns fällt als nächstes folgender Befehl auf:

JNZ SHORT Beispiel.00450678

Der Assembler-Befehl JNZ (=Jump if not zero=Springe wenn nicht null) ist ein bedingter Sprungbefehl. Jedem bedingten Sprungbefehl muss immer ein Befehl vorausgehen, der die Flags bzw. (E)CX verändert. Der Befehl wertet nun die Register aus (Flags bzw. ECX) und springt dann an eine bestimmte Stelle im Code (Sprungmarke).

Als Nächstes kommt der Befehl, der die Flags für den JNZ-Befehl verändert:

CMP EAX,539

CMP (=Compare=Vergleichen) überprüft 2 Werte und setzt dementsprechend die Flags. Im

EAX-Register steht unsere Eingabe. Das sieht man, wenn man noch weiter zurück geht, jedoch will ich an dieser Stelle nicht weiter darauf eingehen.



Wir knacken das Programm

Wir haben gesehen, dass unsere Eingabe mit dem HEX-Wert 539 verglichen wird. Wer kein HEX kann, muss das jetzt irgendwo umrechnen. Wir kommen auf die Zahl 1337. Wir starten ganz normal das Programm und geben 1337 als Pin ein und: Tada!!! Wir kommen in den „geheimen“ Bereich.

Im letzten Schritt wollen wir noch das Programm patchen, damit man irgendein Passwort eingeben kann. Wir klicken doppelt auf den JNZ-Befehl, ersetzen den Inhalt mit „NOP“ und klicken auf „Assemble“. NOP heißt so viel wie „tue einfach gar nichts“. Nun machen wir einen Rechtsklick auf unseren geänderten Befehl und wählen „Copy to executable“ -> „Selection“ aus. Hätten wir mehr als einen Befehl geändert, hätten wir „All modifications“ auswählen müssen. In dem neuen Fenster klicken wir erneut rechts, wählen „Save file“ und speichern anschließend das Programm unter einem neuen Namen ab. Nun könnt ihr das neue Programm unter Windows ausführen und irgendeine Pin eingeben und er wird euch sagen, dass es die richtige Pin war.



Schlusswort

Ihr solltet nun einen kleinen Einblick in die Welt des Reverse-Engineerings erhalten haben. Es gibt noch andere Arten, verschiedene Schütze zu umgehen, so z.B. das Keygenning oder die Programmierung eines Loaders. Auch auf den hier behandelten Gebieten gibt es noch sehr viel mehr zu lernen.

Vermutlich werdet ihr jetzt auch noch nicht in der Lage sein, irgendein Spiel oder Programm zu cracken, aber das sollte auch nicht der Sinn dieses Tutorials sein.

Alles in allem hoffe ich, dass ihr einen guten Einstieg erhalten habt und falls euch mein Tutorial gefällt und es erwünscht ist, werde ich noch weitere Tutorials schreiben. Evtl. mache ich auch noch ein Anti-Cracking-Tutorial für Programmierer, die ihre Programme besser schützen wollen.



Copyright

Das Tutorial ist zu 100% von mir geschrieben. Ich selbst habe das Wissen in den letzten Jahren aus verschiedensten Quellen gelernt. Das Kopieren dieses Tutorials ist erlaubt, jedoch nur absolut unverändert.

Copyright © 2010 by mafia97, All rights reserved



Der Scan von meinem Beispielprogramm:

Spoiler::
Antivirus results

AhnLab-V3 - 2010.08.12.00 - 2010.08.11 - -

AntiVir - 8.2.4.34 - 2010.08.12 - -

Antiy-AVL - 2.0.3.7 - 2010.08.11 - -

Authentium - 5.2.0.5 - 2010.08.12 - -

Avast - 4.8.1351.0 - 2010.08.12 - -

Avast5 - 5.0.332.0 - 2010.08.12 - -

AVG - 9.0.0.851 - 2010.08.12 - -

BitDefender - 7.2 - 2010.08.12 - -

CAT-QuickHeal - 11.00 - 2010.08.12 - -

ClamAV - 0.96.0.3-git - 2010.08.12 - -

Comodo - 5715 - 2010.08.12 - -

DrWeb - 5.0.2.03300 - 2010.08.12 - -

Emsisoft - 5.0.0.37 - 2010.08.12 - -

eSafe - 7.0.17.0 - 2010.08.11 - -

eTrust-Vet - 36.1.7785 - 2010.08.12 - -

F-Prot - 4.6.1.107 - 2010.08.12 - -

F-Secure - 9.0.15370.0 - 2010.08.12 - -

Fortinet - 4.1.143.0 - 2010.08.12 - -

GData - 21 - 2010.08.12 - -

Ikarus - T3.1.1.88.0 - 2010.08.12 - -

Jiangmin - 13.0.900 - 2010.08.12 - -

Kaspersky - 7.0.0.125 - 2010.08.12 - -

McAfee - 5.400.0.1158 - 2010.08.12 - -

McAfee-GW-Edition - 2010.1 - 2010.08.12 - Heuristic.BehavesLike.Win32.Backdoor.H

Microsoft - 1.6004 - 2010.08.12 - -

NOD32 - 5361 - 2010.08.12 - -

Norman - 6.05.11 - 2010.08.12 - -

nProtect - 2010-08-12.03 - 2010.08.12 - -

Panda - 10.0.2.7 - 2010.08.12 - -

PCTools - 7.0.3.5 - 2010.08.12 - -

Prevx - 3.0 - 2010.08.12 - -

Rising - 22.60.03.04 - 2010.08.12 - -

Sophos - 4.56.0 - 2010.08.12 - -

Sunbelt - 6722 - 2010.08.12 - -

SUPERAntiSpyware - 4.40.0.1006 - 2010.08.12 - -

Symantec - 20101.1.1.7 - 2010.08.12 - -

TheHacker - 6.5.2.1.343 - 2010.08.11 - -

TrendMicro - 9.120.0.1004 - 2010.08.12 - -

TrendMicro-HouseCall - 9.120.0.1004 - 2010.08.12 - -

VBA32 - 3.12.14.0 - 2010.08.11 - -

ViRobot - 2010.8.9.3978 - 2010.08.12 - -

VirusBuster - 5.0.27.0 - 2010.08.12 - -

File info:

MD5: 8dd8441d7b9dbc6de21e553d747e3542

SHA1: 55c05b0048f15ef831635a5e76dcc49081e9a1f5

SHA256: dfae3fdd1056565af6e2b4f8fd8f4e0f9f30c8c12109e2de0d 84315cb0e04290

File size: 378880 bytes

Scan date: 2010-08-12 13:54:09 (UTC)


Ich hab keine Ahnung, warum das eine Antivirenprogramm was erkennt, versichere euch jedoch, dass es vollkommen in Ordnung ist.





Ich hoffe auch auf Feedback.Und auch wenn es keinen Hide-Hack gibt, so könnt ihr trotzdem auf das kleine "+" unten rechts klicken.
Folgende Benutzer haben sich bedankt:
Caballero (29.04.11), kaetzchen (27.04.11)
  #2  
06.04.11, 02:37
Weedster
Junior Member
 
Registriert seit: Apr 2011
Beiträge: 5
Thanks: 0
Thanked 0 Times in 0 Posts

Gutes Tut - hilft denke ich weiter ;-)


Danke dir
  #3  
13.04.11, 20:03
freakymen
Junior Member
 
Registriert seit: Apr 2011
Beiträge: 4
Thanks: 0
Thanked 0 Times in 0 Posts

Wird mir bestimmt helfen danke.
  #4  
14.04.11, 15:18
W4r10CK
Junior Member
 
Registriert seit: Apr 2011
Beiträge: 5
Thanks: 0
Thanked 0 Times in 0 Posts

Danke,übernimmt man doch gerne
  #5  
26.04.11, 10:39
irrewly
Junior Member
 
Registriert seit: Apr 2011
Ort: United States
Beiträge: 1
Thanks: 0
Thanked 0 Times in 0 Posts
SceneGround v2 | Germany's #1 Underground Community - Antworten

Zitat:
Wird mir bestimmt helfen danke.
__________________
http://webworkfromhome.net/
  #6  
28.04.11, 14:03
attiniaVen
Junior Member
 
Registriert seit: Apr 2011
Ort: United States
Beiträge: 1
Thanks: 0
Thanked 0 Times in 0 Posts
Old And Young Lesbians

Zitat:
Der Bereich war so leer, da wollte ich mal ein Einstieg-Tutorial schreiben Vorwort Ihr kennt das vielleicht: Ihr wollt in das Thema einsteigen und werdet erst mal mit einem Haufen Theorie zugeschüttet (Das geht von verschiedenen Zahlentypen bis hin zu dem Aufbau einer PE-Datei). Dieses Tutorial soll das völlige Gegenteil sein. Ich werde ganz direkt anfangen und die Theorie so kurz wie möglich halten (ohne geht es natürlich nicht). Sollte ich evtl. noch weitere Folgen machen, wird natürlich auch nach und nach immer mehr Theorie folgen. Wer also nicht sehr praxisseitig und auf Deutsch zu dem Thema etwas lernen will, dem empfehle ich lenas-Cracking-Tutorials. Sie sind auf Englisch und mit viel Theorie. Dafür sind sie viel umfangreicher. Ich habe vieles aus diesen Tuts gelernt, jedoch fand ich es nicht unbedingt leicht. Daher wollte ich einen leichten Einstieg und evtl. Fortsetzungen schreiben. Voraussetzungen Also im Voraus: Das Cracken (oder allgemein Reverse Engineering) ist meiner Meinung nach das genaue Gegenteil des Spreadens. Es ist geistig ansprechende und kreative Arbeit und hat nichts mit Fleißarbeit zu tun. Ihr müsst kreativ sein und nachdenken - Im Gegensatz zum Spreaden. Daher sind Grips & Kreativität unablässig. Des Weiteren braucht ihr einen guten Debugger. Er wird unser wichtigstes Hilfsmittel sein. Ich benutze OllyDbg 1.10. Ich habe ihn für euch geuppt inklusive meinem Beispiel-Programm (VT siehe unten), einer Ini-Datei, welche für eine übersichtliche Formatierung sorgt und einer speziellen Zusatz-Hilfe-Datei: http://rapidshare.co...ing-Tut-001.rar Das Passwort ist gemäß Boardregeln 1.g): “www.Sceneground.info“ Das Programm kommt von der Herstellerseite, deshalb spare ich mir mal den VT-Link. Hinzugefügt habe ich nur Hilfe- und Ini-Datei. Wer mir nicht glaubt, lädt ihn sich hier: http://www.ollydbg.de/odbg110.zip Es geht los! Wir starten (für manche zum ersten Mal) unseren Debugger. Evtl. kommen euch jetzt ein paar Fehlermeldungen entgegen. Eine dafür, dass ihr das Programm mit Administrator-Rechten starten sollt und andere, weil ein paar Pfade nicht existieren. Euch wird gesagt, wo ihr den Pfad zu OllyDbg einstellen müsst (ich selbst weiß leider nicht mehr, wo ich das damals machen musste). Nachdem ihr das gemacht habt, nehmen wir noch eine weitere Änderung vor: Wir klicken auf „Help“->“Select API Help File“. Dann geht ihr in das Verzeichnis, in das ihr OllyDbg installiert habt und wählt die „WIN32.HLP“ aus. Wenn wir bestimmte Befehle nicht verstehen, können wir sie uns anzeigen lassen. Nun haben wir unseren Debugger eingerichtet. Als nächstes öffnen wir meine Beispielprogramm.exe, indem wir auf das Ordner-Symbol klicken. Nun habt ihr einen Haufen Assembler-Code vor euch. In der ersten Spalte seht ihr die Offsets. Daneben steht das Ganze im Hex-Code. Eine Spalte weiter seht ihr den Assembler-Code. In der letzten Spalte stehen Kommentare, die das Verstehen der Befehle leichter machen. Vertraut machen mit dem zu crackenden Programm Bevor wir auch nur einen Schritt mehr im Debugger machen, starten wir zuerst das Programm ganz normal in Windows. Ihr seht nun ein kleines Fenster, in dem ihr zur Eingabe einer Pin aufgefordert werdet. Abhängig von der Richtigkeit kommt entweder eine Meldung, dass das Passwort leider falsch sei und das Programm beendet sich. War die Pin richtig… Naja ihr werdet sehen. An dieser Stelle merken wir, dass ich beim Programmieren absichtlich einen törichten Fehler gemacht habe: Beim Falsch-Zustand wird eine Messagebox mit einem festgelegten String ausgegeben. Das werden wir uns jetzt zu Nutze machen… Analyse des Programms Wir gehen wieder zu OllyDbg. Wir haben ja gerade eben gesehen, dass eine Meldung mit einem Text ausgegeben wird. Daher klicken wir jetzt rechts in den Assemblercode rein und wählen: „Search For“-> „All referenced text strings“. Es öffnet sich jetzt ein weiteres Fenster. In der Spalte der Text-Strings fallen uns 2 Einträge auf: ASCII „Du hast es geschafft!“ ASCII „Leider falsch!“ Wir klicken doppelt auf den ersten Eintrag und landen wieder im Assembler-Code. Folgende Zeile ist markiert: MOV EDX,Beispiel.004506D0 Der Assembler-Befehl MOV (=move=bewegen) bedeutet, dass der Inhalt der Quelle „Project1.004506A8“ (Also unser String) in das Register EDX kopiert wird. Wir werden ab hier rückwärts arbeiten und ein paar Schritte zurückgehen. Uns fällt als nächstes folgender Befehl auf: JNZ SHORT Beispiel.00450678 Der Assembler-Befehl JNZ (=Jump if not zero=Springe wenn nicht null) ist ein bedingter Sprungbefehl. Jedem bedingten Sprungbefehl muss immer ein Befehl vorausgehen, der die Flags bzw. (E)CX verändert. Der Befehl wertet nun die Register aus (Flags bzw. ECX) und springt dann an eine bestimmte Stelle im Code (Sprungmarke). Als Nächstes kommt der Befehl, der die Flags für den JNZ-Befehl verändert: CMP EAX,539 CMP (=Compare=Vergleichen) überprüft 2 Werte und setzt dementsprechend die Flags. Im EAX-Register steht unsere Eingabe. Das sieht man, wenn man noch weiter zurück geht, jedoch will ich an dieser Stelle nicht weiter darauf eingehen. Wir knacken das Programm Wir haben gesehen, dass unsere Eingabe mit dem HEX-Wert 539 verglichen wird. Wer kein HEX kann, muss das jetzt irgendwo umrechnen. Wir kommen auf die Zahl 1337. Wir starten ganz normal das Programm und geben 1337 als Pin ein und: Tada!!! Wir kommen in den „geheimen“ Bereich. Im letzten Schritt wollen wir noch das Programm patchen, damit man irgendein Passwort eingeben kann. Wir klicken doppelt auf den JNZ-Befehl, ersetzen den Inhalt mit „NOP“ und klicken auf „Assemble“. NOP heißt so viel wie „tue einfach gar nichts“. Nun machen wir einen Rechtsklick auf unseren geänderten Befehl und wählen „Copy to executable“ -> „Selection“ aus. Hätten wir mehr als einen Befehl geändert, hätten wir „All modifications“ auswählen müssen. In dem neuen Fenster klicken wir erneut rechts, wählen „Save file“ und speichern anschließend das Programm unter einem neuen Namen ab. Nun könnt ihr das neue Programm unter Windows ausführen und irgendeine Pin eingeben und er wird euch sagen, dass es die richtige Pin war. Schlusswort Ihr solltet nun einen kleinen Einblick in die Welt des Reverse-Engineerings erhalten haben. Es gibt noch andere Arten, verschiedene Schütze zu umgehen, so z.B. das Keygenning oder die Programmierung eines Loaders. Auch auf den hier behandelten Gebieten gibt es noch sehr viel mehr zu lernen. Vermutlich werdet ihr jetzt auch noch nicht in der Lage sein, irgendein Spiel oder Programm zu cracken, aber das sollte auch nicht der Sinn dieses Tutorials sein. Alles in allem hoffe ich, dass ihr einen guten Einstieg erhalten habt und falls euch mein Tutorial gefällt und es erwünscht ist, werde ich noch weitere Tutorials schreiben. Evtl. mache ich auch noch ein Anti-Cracking-Tutorial für Programmierer, die ihre Programme besser schützen wollen. Copyright Das Tutorial ist zu 100% von mir geschrieben. Ich selbst habe das Wissen in den letzten Jahren aus verschiedensten Quellen gelernt. Das Kopieren dieses Tutorials ist erlaubt, jedoch nur absolut unverändert. Copyright © 2010 by mafia97, All rights reserved Der Scan von meinem Beispielprogramm:

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:09 Uhr.