Sehr einfaches CrackMe

Diese CrackMe ist für Anfänger gedacht, da es sehr leicht zu lösen ist.
Einfach das Passwort reusfinden. Alle Tools sind erlaubt!
Viel spaß!

LG Wotan
 
Hi
Also ich wil mich da jetz auch ma dran probieren!

habs mir geladen un hab bei HaboWiki en bissi rumgestöbert un bin da auf ollyDbg gestoßen. Hab mir das jez auch geladen un es ma ausprobiert.

Ich versteh zwar ansatzweise die Vorgehensweise des Debuggers aber kapier auch nach langen grübeln nich wie man da jetzt die Vorraussetzun für das Passwort herausfinden kann. Da ich nirgentso eine anleitung (:D) dafür gefunden habe aber es trozdem mal gerne verstehen würde wollt ichs noch ma hier probiern, da das hier bestimmt die Hälfte aller Mitglieder können.

MfG Nik-O
 
Die Frage nach reiner Olly Bedienung hatten wir schon öfters - ein Tipp wäre http://www.tuts4you.com/download.php?list.17

vom Prinzip her: finde die Stelle, an der die Fehlermeldung ausgegeben wird (z.B in dem man die Fehlermeldung beobachtet und dann nach Vorkommen/Nutzung (Referenzierung) solcher Strings schaut ) und schau, was so in der Nähe los ist - ob da z.B rein zufällig eine Serialprüfung stattfindet ;)
 
Danke für den Tip

ich versuchs ma^^

Edit: Naja ich verstehs immer noch nich :P warscheinlich bin ich doch zu blöd^^
 
Ich hab?s gelöst :-)
Die Prüfroutine ist relativ leicht zu finden (Tipp: ?Search for all referenced text strings?).
Dort fällt folgendes If-Konstrukt auf:
Code:
0040148E   .  8B0D DCAB4300 MOV ECX,DWORD PTR DS:[43ABDC]
00401494   .  3B0D D8AB4300 CMP ECX,DWORD PTR DS:[43ABD8]
0040149A   .  75 16         JNZ SHORT CrackMe.004014B2
0040149C   .  6A 30         PUSH 30
0040149E   .  B9 70644300   MOV ECX,CrackMe.00436470
004014A3   .  BA 60644300   MOV EDX,CrackMe.00436460                 ;  ASCII "Passwort Korekt"
004014A8   .  A1 88AC4300   MOV EAX,DWORD PTR DS:[43AC88]
004014AD   .  E8 26810200   CALL CrackMe.004295D8
Der ?conditional jump? @ 0040149A entscheidet darüber, ob der ?Good Boy? angezeigt wird, oder nicht. Die Bedingung wird durch den Befehl ?CMP? in der Zeile darüber festgelegt, der zwei Speicheradressen vergleicht (43ABDC und 43ABD8 ).

Eine der beiden wird kurz darüber festgelegt und verändert sich auch bis zur Abfrage nicht:
Code:
00401433   .  C705 D8AB4300>MOV DWORD PTR DS:[43ABD8],7C23
Die andere wird danach hier definiert:
Code:
00401474   .  E8 BF5F0200   CALL CrackMe.00427438
00401479   .  A3 DCAB4300   MOV DWORD PTR DS:[43ABDC],EAX
EAX wird von Calls so gut wie immer verändert, deshalb ist davon auszugehen, dass der Call davor die Serial generiert. Nachdem ich mir diesen Call genauer angeschaut habe, habe ich festgestellt, dass er einfach nur das Passwort in eine Zahl umwandelt, das Passwort lautet also $7C23 oder x7c23, 0x7C23, 31779, ... ;)
 
Ich kann die Lösung schon nachvollziehen, ist ja nicht besonders kompliziert. Allerdings habe ich ein Problem beim Debuggen. Mir kommt so vor als würde bei falschen Passwörtern eine Accessviolation verursacht.

Ollydbg meldet:Accessviolation when writing to 0000FF80 use Shift+F7/F8/F9 to pass Exception to program.
Und man landet dann im Modul Kernel32 bei RtlRaiseException.

Ist das gewollt?
 
Das liegt wahrscheinlich daran, dass du als Passwort Buchstaben angibst. Die Umwandelfunktion wirft dann eine Exception.
 
^^

Code:
Naja, soleicht war das auch nicht ich hab nicht herausgefunden, woher die Messages kamen, das war nix mit Jumps, sondern mit SynEnter.  Naja, ich hab einfach die Badboys zu Goodboys umgeformt, das heißt:  MOV EDX,436471 bzw MOV EDX,436481 einfach assembled zu MOV EDX,436460

;)
 
erbitte Hilfe in ida:
4zlxlond4zl.jpg
soweit isses mir klar

auch der vergleich der 2 adressen ist mir klar

wie kamst du darauf dass der call über eax wichtig ist und vor allem wie interpretierst du den call(ist dass der richtige) zum passwort?

Nachdem ich mir diesen Call genauer angeschaut habe, habe ich festgestellt, dass er einfach nur das Passwort in eine Zahl umwandelt, das Passwort lautet also $7C23 oder x7c23, 0x7C23, 31779,
t9zkftlym5u.jpg
 
Ich versuch mal, mich zu erinnern (immerhin ist es schon 'ne Weile her, dass ich mir das CrackMe angeschaut habe ;)).
Original von user82
wie kamst du darauf dass der call über eax wichtig ist
Warum EAX wichtig ist, ist dir klar, oder? Der Call darüber ist wichtig, da mir noch kein Compiler begegnet ist, der den Rückgabewert nicht in EAX speichert. Ansonsten kann man es natürlich auch im Debugger verfolgen und einen Breakpoint auf den Call setzen. Nach einem "Step over" landest du ja an der Addresse nach dem Call und kannst nachschauen, ob EAX sich verändert hat. Das tut es in diesem Fall.

Original von user82
wie interpretierst du den call(ist dass der richtige) zum passwort?
Um ehrlich zu sein, ich habe erst nur gesehen, dass die Funktion irgendetwas mit dem String anstellt. Es hat ein wenig gedauert, bis ich erkannt hat, dass die Funktion den String zeichenweise einliest, um zu prüfen, ob es sich um Ziffern handelt, von denen sie dann die ASCII-0 abzieht, um sie in "richtige" Zahlen umzuwandeln.

Nachdem ich das erkannt habe, habe ich vermutet, dass die Funktion die Aufgabe hat, einen String in eine Zahl umzuwandeln. Das hat sich auch durch Nachrechnen bestätigt, die Rückgabe in EAX entsprach genau dem Wert des Strings, wenn man es von hex->dec umgerechnet hat (Olly zeigt normalerweise nur Hex an).

Der Wert wurde dann ohne weitere Verarbeitung mit einem festen Wert verglichen, von daher hatte ich den "Algorithmus" zur Passwort-Berechnung.

Dann habe ich mich noch gefragt, wozu die Funktion die Ziffern mit den Zeichen '$' und 'x' vergleicht, und lag mit der Vermutung richtig, dass die Funktion auch Hexadezimal-Strings versteht.

Das ging natürlich nicht so schnell und geradlinig (zumindest nicht bei mir), da ich zunächst nur Buchstaben und keine Zahlen eingegeben habe, weshalb ich zunächst nur Fehlermeldungen bekam.


MfG, Eydeet
 
so die richtige lösung^^

Mit olly geöffnet, -> nach textstrings suchen, bei Passwort korrekt die Stelle durchsucht,
kurtz darunter finded die eingabeüberprüfung statt (cmp) dort einen Breakpoint (F2) gesezt und es mit einen versuchs pw gefüttert. Dort waren dann 2 Hexdizimale werte, einmal meine Eingabe und umgrechnet "31779". Das heißt das dort der Vergleich Stadtfinded und somit 31779 das richtige PW ist
 
hi

wollte ma so nebenbei fragen für was dsa gut ist ?

ich hab das selber mal ausprobiert ohne wirklich erfahrung diesbezüglich zu haben
und kann nur den ersten schritt nachvollziehen von eydeet´s beitrag

aber danach kam ich nicht mehr weiter

ist das um zB winrar dateien zu knacken ? oder nennt mal bitte ein beispiel wo sowas helfen kann ein passworrt zu knacken



mfg 001
 
Original von [001>Nighty]
wollte ma so nebenbei fragen für was dsa gut ist ?
...
oder nennt mal bitte ein beispiel wo sowas helfen kann ein passworrt zu knacken
http://wiki.hackerboard.de/index.php/CrackMe
CrackMes (engl. etwa knack mich!) sind Programme, bei denen bestimmte Funktionen besonders geschützt sind, zum Beispiel durch Passwortabfragen oder Ähnliches. Die Aufgabe ist es, an diese geschützten und/oder versteckten Funktionen zu kommen. Es gibt mehrere Vorgehensweisen und der Autor des jeweiligen CrackMes entscheidet in der Regel, welche davon erlaubt sind.

Zweck:CrackMes sind als Übungsaufgaben im Bereich Reverse Code Engineering (aka Binary Reverse Engineering) gedacht. Da bei einem gewöhnlichen CrackMe nur die ausführbare Datei vorliegt, versucht der CrackMe-Lösender nur anhand von Maschinencode die Funktionsweise des Programms zu verstehen. Nicht selten muss derjenige sich dazu in bestimmte Bereiche einarbeiten oder einlesen und gewinnt somit an Erfahrung. Auf solche "spielerische" Weise verbessert er seine System- und Programmierkenntnisse.
Kurz: mit den Kenntnissen kann man auch "echte" Programme manipulieren. Seien es Serial/Passwortabfragen oder auch ganz normale Fehleranalyse und Suche.
 
ah ok danke

ich hab jetzt mal mit ollydbg einfahc mal die cs1.6.exe da reingehauen und 1 hexadezimal code bzw ein wert umgestellt dann auf das play symbol geklickt

das spiel ist gestartet und danach sofort ins windows zurück gesprungen es war noch da aber ich konnte es nicht mehr aufrufen

kann man also so zB spiele exen bearebiten um no cd cracks zu erstellen ?
nur ich hab noch nicht die funktion gefunden due datei zu speichern^
 
im prienziep kann man alles machen
du schreibs die exe quasie um und wenn n fehler drin ist dann läuft n prog auch nimmer
 
Zurück
Oben