Level 2 KeyGen Me - Hilfe gesucht

Huhu,
nun ja, ich habe da mal eine kleine Anfrage^^. Nachdem ich dieses kleine nette und bescheidene (wohlgemerkt deutschsprachige) Board hier gesehen hab dachte ich mir ich sollte mich mal anmelden. Hab mir schnell in den Stickies die Antwort auf die Fragen geholt und dann auch mein Werk vollbracht :]
Nun ja, ein paar Stickies gelesen, ein paar Webseiten durchforstet und dabei bin ich erstens mal auf tutorials.accessroot.com gestoßen und schließlich auf crackmes.de... Ein bisschen gelesen hab ich dann erstmal :rolleyes:
Nun gut, inzwischen bin ich soweit,dass die Level-1 Crackmes dort mich vor kein größeres Problem mehr stellen... Erfolgsmeldung suchen, irgendwo auf den JMP dahin nen BP setzen, starten, Serial ablesen (machmal ist die sogar hardcoded...) und Fehlermeldung so patchen dass sie die Serial anstatt die Fehlermeldung ausgibt...
Nun, jetzt dachte ich mir ich versuche mich an einem Level 2 Crackme... Fehlanzeige, da scheiter ich schon auf ganzer Linie... http://www.crackmes.de/users/trias/crackme_1_by_trias/
Handelt sich um das hier... Leider hat sich dort noch niemand die Mühe gemacht ein Schritt -für-Schritt Tutorial zu schreiben was man genau warum machen muss um das zu lösen... Könnte das vllt mal einer für mich lösen und vllt. hinterher erklären was er gemacht hat? Einfache, "habs geschafft" Kommentare bringen nämlich herzlich wenig... Wär sehr nett, thx... Ich nutze übrigens Olly, vin aber auch (theoretisch) w32dsm nicht abgeneigt....
THX schonmal für eure Hilfe ;)!
 
Durch eine Schritt für Schritt Anleitung wirst Du nicht lernen wie man es macht ;) (höchstenst wie man ein sehr ähnliches Crackme löst).
Fehlanzeige, da scheiter ich schon auf ganzer Linie...
Was klappt denn an der Methode "Erfolgsmeldung suchen" nicht? Wenn das Crackme in Olly geladen ist und läuft, suche nach allen referenzierten Text-Strings. Da wirst Du auf was stoßen ;)
Jetzt musst Du diese komplette Funktion durchgehen und schauen was da gemacht wird. Als Tipp (damit es nicht zuviel Arbeit wird): Es ist ein Delphi-Programm und damit recht "aufgebläht".Im "niedrigeren" Adressbreich (also z.B bei diesem Crackme 40-42xxxx) befinden sich die "Delphi-internen" Funktionen. Und meiner Erfahrung nach je "niedriger" desto "grundlegener". Die Bedeutung kann man öfters erkennen, in dem man mittels F8 einen Step-Over macht (also über den Call schreitet, anstatt reinzugehen und Zeit zu verlieren ;) ) und sich die Rückgaben anschaut - eventuell auch paar Schritte weitergeht. So kann man in etwa sehen, welche Funktion fürs Stringeinlesen gebraucht ist. Wichtiger sind dagegen Calls, die im "höheren" Adressbreich liegen - also z.B 44xxxx. Das sind die vom Programmierer selbst definierten Unterprozeduren/Funktionen. Da solltest Du auf jedenfall reinschauen.
Noch einige Eigenartgen von Delphi: Parameter werden zum Teil auch in Registern übergeben/zurückgegeben.

Jetzt zum Crackme selbst: wenn Du auf die "richtige" Nachricht gestoßen bist und zu dieser Adresse gehst, wirst Du sehen, dass Du Dich in einer kleienn Funktion befindest - und interessant ist eigentlich nur ein Call, der kurz vor der "Badboy" Nachricht gemacht wird. Wenn Du da reingehst, siehst Du unter anderem zwei schleifen. Jetzt kannst Du a) versuchen, den ganzen ablauf zu rekonstruieren. Könnte eine nette Übung sein, um das reversen von Delphi-compilierten Crackmes zu vertiefen. Oder b) darauf vertrauen, dass Stufe 2 nicht schwer sein kann dass irgendwo eine "fertigbrechnete" Serial (oder ein Teil davon) mit der Eingabe verglichen werden ;)

Vor den Schleifen werden noch ein paar Bedienungen für die Eingaben überprüft - (welche, das muss Du selber herausfinden, z.B dass der Name eine Mindestlänge hat und die Serial ein bestimmtes Format ;) ).
 
Kleiner Tipp, gerade bei Delphi-Apps spart der viel Zeit: Analysier das Crackme mal mit
IDA und lass, falls ida es nicht selbst erkennt, die Borland Visual Component Library-Signatur anwenden(View->Open subviews->signatures->(rechtsklick)add signature).
Dann kannst du unter File->produce map file eine .map Datei erzeugen und mit diesem Plugin die Map-File in Olly laden und schon hast du verständliche Namen für die Delphi-Funktionen(das geht auch mit VC++ Programmen usw.).
Für so ein kleines Crackme mag es vllt. ein Overkill sein, aber speziell wenn man größere Anwendungen/schwerere Crackmes reverst, macht es die Sache deutlich einfacher.
 
Zurück
Oben