Mein erstes CrackMe

#1
Wer knackt es? sollte sehr leicht zum knacken sein

Bitte beachtet das das mein erstes CrackMe ist, also ist es sicher nicht perfekt
 

SUID:root

Member of Honour
#5
Sollen sich erstmal noch ein paar Leutchen dran versuchen. Ist ja für Anfänger gut geeignet.

Ein Tutorial wäre für die zwei Schritte schon fast zu viel Arbeit. ;)

Hast du es noch nicht gelöst?
Wenn du es nicht lösen willst, kann ich dir die Lösung schicken.

btw: Dein CM ist recht zeitintensiv. Von den Bottles of Beer träum ich heut bestimmt heut Nacht. :p
 

Malo

New member
#6
Ähm ja... gelöst hab ichs noch nicht wirklich, nein. Bin in Assembler noch nicht so bewandert, und ich muss auch erst alle Features der Debugger kennen lernen...

Zu meinem Crackme: Tja, ich bin halt ein Zauberer :)
 
R

Rushjo

Guest
#7
Also, das CrackMe ist sehr einfach. Es wird nur ein kleiner Taschenspielertrick verwandt, um das Password zu tarnen. :)

rushjo

P.S. Hat bei mir weniger als 10min gedauert.
 
#9
Man tut was man kann! man sollte es sogar in ner Textdatei knacken können! sucht mal nach dem stichwort G e t -> in Textdatei oder in einen andern prog. nach Get
 
#10
Kann mir jmd. mal das Passwort per PN schreiben und mir mal erklären wie ich dass rauskrieg, ich checks irgendwie net o.0

Ein Tut wäre auch richtig geil :)
 

Malo

New member
#12
Kurze Version eines Tutorials:
Ollydbg starten. Das Crackme dort öffnen. Rechtsklick ins große Fenster --> Search for --> All referenced text strings. Dann steht dort irgendwo der String "O K".

Jetzt noch der Tipp, dass das Passwort hardgecodet (d.h. "direkt" im Programm eingefügt und abgefagt). Man kann es also direkt ablesen.

Letzter Tipp: Es wird halt ein "Taschenspielertrick" verwendet. Es wird also versucht, Verwirrung zu stiften, an einer ganz simplen Stelle. Den Rest könnt ihr wohl selbst überlegen ;)
 
#13
hmm...so weit war ich auch schon. hab schon nen beakpoint gesetzt passwort eingegeben (irgendwas halt) aber anderes nicht gefunden.
*manbinichdoof*
Mfg
 

Malo

New member
#14
Original von fast_killer
hmm...so weit war ich auch schon. hab schon nen beakpoint gesetzt passwort eingegeben (irgendwas halt) aber anderes nicht gefunden.
*manbinichdoof*
Mfg
Tja, dann hast du nicht vernünftig hingesehen, bzw. dich verarschen lassen :)
 

SUID:root

Member of Honour
#15
Denk mal an Rushjo Bemerkung mit dem Taschenspielertrick.
;)
Ansonsten poste ich morgen mal die Lösung/das Tutorial.
Crackmes ohne Lösung sind auf Dauer nicht sinnvoll. So lernt niemand etwas dabei.

root
 

SUID:root

Member of Honour
#18
Auflösung Crackme

Als allererstes machen wir eine Testeingabe um zu sehen, wie sich das CM verhält. Gibt es vielleicht eine Message-Box aus?
Okay, das CM schließt sich einfach nach einer Testeingabe ohne jegliche Meldung.

Jetzt laden wir das File mit/in Olly.

Im Codefenster einen Rechtsklick machen und auf Search for -> "all referenced text strings" gehen.

In dem neuen Fenster scrollen wir durch und suchen nach einem Hinweis ,der eine richtige Eingabe bestätigt (vielleicht einer mögichen Messagebox-Ausgabe?).

Wir finden "O K"

Ein Doppelklick auf diese Zeile bringt uns zu der gewünschten Stelle im Codefenster.

Code:
00401D58    .  C785 34FFFFFF>MOV DWORD PTR SS:[EBP-CC],CrackMe.00401A>;  UNICODE "O K"
Die Vermutung liegt nahe, dass der relevante Code der die Eingabe prüft, irgendwo darüber sein muss.

22 Zeilen darüber werden wir fündig.

Code:
00401CF1    .  FF15 3C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCm>;  MSVBVM60.__vbaStrCmp

__vbaStrCmp vergleicht also einen String.

Wir setzen einen Breakpoint mit F2

Mit F9 oder der Pfeil-Taste starten wir das Crackme.
Danach machen wir eine Testeingabe (1234567890) und drücken den OK-Button.

Olly breakt am Breakpoint.
Wir sehen im rechten oberen Fenster im Register EAX UNICODE "1234567890"

Jetzt gehen wir mit F7 in den Call am Breakpoint und dann Schritt für Schritt mit F7 durchs Programm.
Nach 30 bzw 31 mal F7 sehen wir im Register-Fenster von Olly im Register ESI unsere Eingabe "1234567890" und im Register EDI "GetWindowsVersion" => das Passwort.

Das war jetzt der lange und ausführliche Weg um mal generell das Vorgehen zu erklären.

Wenn man genau hinschaut, sieht man dass im Codefenster der Unicode und der StrCmp in zwei Zeilen untereinander stehen.

Code:
00401CEC    .  68 3C1A4000   PUSH CrackMe.00401A3C                    ;  UNICODE "GetWindowsVersion"
00401CF1    .  FF15 3C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCm>;  MSVBVM60.__vbaStrCmp
Also ist keine so lange Suche nötig. ;)

Anmerkung zum Schluss: Man hätte bei der Suche nach dem Breakpoint natürlich auch anstatt nach einem Textstring zu suchen, mittels "search for -> "all intermodular calls" nach __vbaStrCmp suchen können.

root
 
Oben