Zu blöd um eigenes CrackMe zu knacken -.-

Hab mir ein CrackMe in Pascal mit Delphi 7 geschrieben.

Es wird kein Passwort generiert. Es ist ein festes Passwort in der exe gespeichert.
Es gibt ein Edit-feld und einen button. Wenn ich auf den Button klicke wird der eingegebene String mit dem Passwort verglichen und dann kommt die entsprechende messagebox.

Wenn ich das ganze mit OllyDbg zerpflücke, einen BrakePoint setze und mir dann den code anschaue, sehe ich meinen eingegebenen string, jedoch nicht das "richtige" passwort welches in der exe gespeichert ist.


Hab das CrackMe hochgeladen...


Bitte um aufklärung:(



ByteDevil
 
sdkjhgljksdfgiöaksdfjuitzgeo7irhfövbgkahfzcsjfdbgvnu

Ich denke mal du hast die Stelle schon gefunden?
Code:
004537F8  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
004537FB  |. BA 48384500    MOV EDX,Mein_ers.00453848
00453800  |. E8 530AFBFF    CALL Mein_ers.00404258  -- Vergleichsfunktion
00453805  |. 75 0C          JNZ SHORT Mein_ers.00453813

In EAX steht die Adresse zu dem eingegebenen String und in EDX steht die Adresse des hardcodierten Strings. (Um zu gucken was an der Adresse steht, klicke in OllyDbg Rechtsklick auf die Adresse auf EDX und Follow in Dump. Unten siehst du dann das Passwort.
 
jo^^ Han die Lösung mal nachverfolgt^^
wenn du die Zeile Nachverfolgst bekomste das PW. Nur die Ös sind als Geteiltzeichen abgebildet. Darauf muss man dann selbst achten.

;P(War mein 1. Crackme)
 
lol das passwort habe ich sofort gefunden aber ich war davon überzeugt dass das:
sdkjhgljksdfgiöaksdfjuitzgeo7irhfövbgkahfzcsjfdbgvnu
nicht richtig sein kann omg ^^
 
@+++ATH0:
ich bin neu hier und hab auch schon ein paar einfache consolen crackmes hinbekommen. nur das hier überfordert mich reichlich!!!
kannst du mir sagen, wie du zu dieser stelle da oben gekommen bist.

habs mit steppen versucht nur das sind irgendwie endlosschleifen ?!
aufjedenfall finde ich keinen CALL mit anschließenden JNZ SHORT dahinter!

------------------------

nabitte wer sagts denn !!! :):):)
habs über den referend string gefunden.

aber über stepping muss das doch auch gehen ?!
kann mir das einer anhand diesem beispiel erklären??

gruß.
 
was meinst Du mit "stepping" - Schritt für Schritt von Anfang an? Das klappt (per Hand) bei Crackmes mit GUI nicht mehr wirklich - vor allem bei Delphi nicht, weil dazwischen tausende Calls und JMPs liegen ;)
 
@CDW: genau das mein ich ;) ...hatte wenig erfahrung mit gui.
habs dann erst gemerkt wie so ein gui-programm, geschrieben in delphi, eigendlich aufgebaut ist.
ich hab in der vegangenheit nur mit consolen crackmes hier von euch gearbeitet und da klappt stepping sehr gut.

aber was ist jetz, wenn der programmierer die strings nich so einfach ablegt, sondern sie "verschlüsselt", z.b. so:

Code:
char r[7];
r[0]='R';
r[1]='i';
r[2]='c';
r[3]='h';
r[4]='t';
r[5]='i';
r[6]='g';
r[7]='\0';

dann hat man doch wenig erfolg beim suchen über 'referenced stirings', wie würdet ihr (würdest du) da denn vorgehen ?

gruß.
 
Für Delphi gibt es DeDe - darüber kann man schon Ansatzpunkte sammeln. Ansonsten gilt, dass auch Delphi (bzw. VCL-Bibliothek http://de.wikipedia.org/wiki/VCL ) nur mit Wasser kocht und Eingaben mittels WinAPI (die nur irgendwo tief eingebettet wird) einlesen muss.
Ob das jetzt GetDlgItemText ist oder SendMessage, WM_GETTEXT kommt auf die Lib an.

Oft kann man auch paar Eingaben machen, bestätigen und das Programm anschließend pausieren - nun sieht man im Stackfenster die "Überbleibsel" der Prüfüng (Stringrefernzen, Rücksprungadressen). Das kann man auch als Hilfe benutzen. Wenn sonst nichts hilft - eine allgemein winAPI suchen, die höchstwahrscheinlich aufgerufen wird, und ab da "steppen" (eher gesagt tracen). Das kann allerdings ziemlich lange dauern. In OllyDbg exisitert daher eine Tracinghilfe (man kann Abbruchbedingungen festlegen -> Menü Debug->set condition).


PS: zu der "Verschlüsselung": so wie ich das sehe, ist der Quellcode nur schwerer zu lesen, mehr nicht ;)
 
Zurück
Oben