Mein erstes CrackMe [Status: solved]

Hallo KingSuperFly,

habe mal eure Site besucht.
Respekt!

Da findet man ne Menge nützliches Zeug und viele Tuts. Werde mich da am WE mal reinarbeiten.

btw: Mach ruhig mehr von diesen SWF-Tuts. Die finde ich wirklich sehr anschaulich.
Darfst du gern hier reinstellen, sofern es nur um Crackmes geht.

Finde ich klasse.

root
 
Hi,

wenn das CrackMe zu schwer ist, geb ich Euch gerne ein paar Anhaltspunkte.
Aber erstmal sollten es die, die es vorher nicht starten konnte, testen ob es jetzt bei ihnen funktioniert.

-Karl
 
Hi SUID:root
danke für dein kleines lob*gg*
also wenn meine zeit es zu läßt werde ich bestimmt noch des öfteren was nettes posten an flash movies (es versteht sich von selbst nur für Crackmes :D ).
Ps:viel spaß beim flash tut abend am wochende sind ja ein paar tuts)

@KarlRanseier
danke erst mal für das fixen des Crackmes)
funzd nun,aber das ist gar nicht mal so einfach^^
werde mir das noch mal später angucken.
Greetz
KingSuperFly
 
Original von KarlRanseier
@KarlRanseier
danke erst mal für das fixen des Crackmes)
funzd nun,aber das ist gar nicht mal so einfach^^
werde mir das noch mal später angucken.
Greetz
KingSuperFly

Hi,

schön, dass es jetzt bei Dir läuft. Auch schön, dass das CrackMe eine Herausforderung für dich ist :)

Inwiefern ist es eigentlich schwieriger ein CrackMe ohne Bestätigungsbutton zu haben? Mein Passwort wird nämlich direkt bei der Eingabe überprüft (OnChange). Ich habe das auf einer Anti-Cracking-Tipps-Seite gelesen, dass es das Cracken etwas erschwert.

Einige Hinweise zum CrackMe:
- Gepackt ist die exe, wie ihr bereits rausbekommen habt, mit "MEW11 SE 1.2". War wohl keine Schwierigkeit für euch die exe zu entpacken.
- MEW11 ist der einzige nicht-selbstgemachte Schutzmechanismus in diesem CrackMe, ich habe keine weiteren exe-Packer, exe-Protektoren o.Ä. benutzt.
- Es sind keine Routinen eingebaut die Disassembler/Debugger/Editoren abschießen oder erkennen.
- Es wird keine Checksumme der Datei gebildet. Nach dem Patchen sollte sie also trotzdem laufen.


Weiterhin viel Spaß damit!
-Karl
 
Hi hbier
@also ich mache zur zeit einen 1.5 euro job 8o
Bin Tischler von beruf normaler weiße.
Zu dem BlackHeaf Project,da geht nicht so viel zeit drauf da ich kein forum unterhalte.
Aber das reversing nimmt schon viel zeit ein),da man erst mal sehr sehr viele englische tuts meist lesen muß um das alles zu verstehen.
Es gibt leider zu wenig deutsche aktuelle Tuts.
Ich selber kann ja leider auch noch nicht so viel,aber bilde mich immer gerne weiter)
Unpacking und harte cryptos kann ich noch nicht so gut,aber auf dem GRN-CREW foren board kann man gute fragen stellen zu den Temen)
Bloß ist das forum seit2 tagen Down :D
Ich sag mal jeder hat andere Hobbys.
Was bist du schüler?

@KarlRanseier
also das hab ich selber rausgefunden RegQueryValueExA ist immer ein guter ansatz.
Bloß will ich ne serial ,was ich wohl nicht schaffe :D
 
Hi,

wie gesagt, wenn man das Passwort nicht rausbekommt, kann man auch versuchen die Abfrage rauszupatchen.

Edit: Ich hab ins CrackMe noch eine kleine Hürde eingebaut. Bin mal gespannt wer das CrackMe knacken kann.
Edit: Ich hab das CrackMe nochmals verbessert, ladet euch jetzt das CrackMe2 herunter.
Bei BuHa hat jemand die erste Version des CrackMes schon knacken können.

-Karl
 
Crackme1: PLAIN-TEXT : .&92´?!^'*-°.

Crackme2: SHA1-Hash : 8ED3EE55301467105F15B8191B2AF309D9461720

Viel Spass beim BruteForcen, ich bin jedenfalls nicht so verrückt. X(

Ich habe noch nie IL-CODE gepatcht, also verzeiht mir, wenn ich das jetzt lasse.

Tutorial folgt, wenn Interesse besteht.
 
Tutorial folgt, wenn Interesse besteht.

Ein Crackme zu cracken ohne die Lösung zu veröffentlichen ist nicht wirklich schön. Andere wollen ja auch etwas davon haben. :)

Mit anderen Worten: Klar, als her damit. ;)

Danke schonmal.

Grüsse

root
 
So ich schreibe jetzt ein TUT fürs 2. Crackme. Die Vorgehensweise ist eigentlich bei beiden fast gleich. Nur beim ersten muss man noch MEW mupen. Das wurde glaube ich schon genug behandelt.

So wie fängt man normalerweise an ?
Klar PEID und gucken was los is.

UPX, aha. Upx runterladen und mit "upx -d Crackme2.exe" unpacken.

Nochmal mit PEiD untersuchen, und gucken was der KryptoAnalyser sagt.
Oha. Alles voll :D. Interessant ist CryptDecrypt. Anscheinend wird eine Ressource in der Exe Entschlüsselt. Das könnte wichtig sein.

So jetzt starten wir ollyShadow (spezielle Version von OllyDbg zu finden auf www.blackheaf.de.vu) und laden es rein. Das normale OllyDbg sollte es auch tun.

Rechtsklick -> Search for -> All intermodular Calls.

Hmm, nicht viel zu sehen von irgendwelchen Calls die interessant sein könnten, wie zum Beispiel GetWindowTextA.
Was wir sehen ist aber : IsDebuggerPresent. Olly Shadow hat ein nettes Plugin das diesen Störenfried für uns erledigt. Alternativ patcht ihr die Stelle halt, das sollte kein grosses problem für euch darstellen.

So Was jetzt ? Wir erinnern uns. CryptDecrypt. Ja , und wir finden sogar den Call dahin unter All intermodular Calls.

ADVAPI32.CryptDecrypt

So da springen wir hin und sehen folgendes:

Code:
00404616   .  53            PUSH EBX
00404617   .  50            PUSH EAX
00404618   .  6A 00         PUSH 0
0040461A   .  8BCA          MOV ECX,EDX                              ;  ntdll.KiFastSystemCallRet
0040461C   .  83E1 03       AND ECX,3
0040461F   .  6A 01         PUSH 1
00404621   .  F3:A4         REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
00404623   .  8B4D E0       MOV ECX,DWORD PTR SS:[EBP-20]
00404626   .  6A 00         PUSH 0
00404628   .  51            PUSH ECX
00404629   .  FF15 1CC04000 CALL DWORD PTR DS:[<&ADVAPI32.CryptDecry>;  ADVAPI32.CryptDecrypt
0040462F   .  85C0          TEST EAX,EAX
00404631   .  75 32         JNZ SHORT Crackme2.00404665

So, ich nehme an dass das was entschlüsselt wird in EAX gepusht wird und dann durch den Call gejagt wird. Also setzten wir ein Breakpoint an der Stelle "PUSH EAX".
Und jetzt F9. Jetzt steht in EAX die Adresse zu dem Zeugs was entschlüsselt werden soll. Im Register-Fenster machen wir Rechtsklick auf den Wert von EAX und dann "Follow in Dump". So ganz schön verwirrtes Zeug steht da jetzt.
Aber wir sind ja dabei es zu entschlüsseln ;)

So jetz steppen wir über den Call hinweg mit F8 bis zu TEST EAX, EAX.
Und jetzt hat sich der Hex-DUMP verändert. Unten links müsste jetzt das entschlüsselte stehen. Und HUCH wir entdecken einen Auschnitt der uns doch verdammt bekannt vorkommt:
"This program cannot be run in Dos mode".

Wir haben gerade eine weitere Executable im tiefsten inneren des Programms entschlüsselt. Was wir jetzt machen ? Wir makieren diesen Wust von der Adresse 02E90650 (also da wo MZ steht) bis zu 02E97650. Das sind die letzten Werte die überhaupt noch im Dump stehen, danach kommt nur noch 00 00 00 00 usw.

An dieser Stelle macht sich OllyShadow wirklich bezahlt. Denn wir können unter Rechtsklick auf das was wir markiert haben -> Export to Table -> Pascal Style.

Wir haben jetzt ein Array of Byte, das wir in Delphi oder Pascal mit Blockwrite zu einer binären Datei schreiben.

Ich hab das so in Delphi gemacht :

Code:
...

const
  Values: array [0..28687] of Byte = (

/////// RIESEN Dump ausgeschnitten ;)

)

procedure TForm1.Button1Click(Sender: TObject);
var
f:File;
begin
AssignFile(f,'Dump.exe');
ReWrite(f);
BlockWrite(f, Values,225);
CloseFile(f);
end;

So kompilieren, starten auf den Button klicken und jetzt haben wir die entschlüsselte exe aus dem Crackme.
Mal kurz starten und wir sehen, das eigentlich Crackme ist diese exe hier. :D

So mit Peid mal kurz gucken und *SCHLUCK* : C# .NET.

Also gut, Lutz Roeder's .NET Reflector mal kurz runtergeladen, gestartet und die exe damit mal angeguckt.

Es erscheint eine VoidMain-Node. +, dann auf die exe +, dann die Schwalbenklammern + . Wir sehen a,b,c....

Wir machen d auf und dann b(Object, EventArgs). Rechts sehen wir nun das Kernstück des Crackmes. Wir sehen ein Array of Char, dessen einzelne Zeichen zusammen den SHA1 Hasch bilden. Wenn der eingetippte String in die Textbox dem String entspricht, das in SHA1 gehasht worden ist, dann soll Well Done ausgegeben werden.

Wie gesagt. Ich hatte nie viel am Hut mit C# und IL-CODE Kram. Deswegen hat mir das gereicht und ich sehe es als gesolved an. Ich weiss ehrlich gsagt nicht wie man das patcht. Nun gut. Das wars dann auch. Sers.
 
Uff. Ehm ja, okay.
Das ist alles recht bitter. Bis hierher haben mir CM´s Spaß gemacht; aber das ist jetzt recht heftiger Stoff.

Kann deiner Anleitung zwar folgen, doch ich für meinen Teil muss sagen, dass das mein Wissen bis dato übersteigt.

Wäre es jetzt kein .NET Code gewesen, wäre ja auch der Reflector nicht zum Einsatz gekommen und ich vermute mal, es wäre noch komplizierter gewesen.

Danke für diese Lösung.

root
 
Ich hoffe das war mal ein abwechselungsreiches CrackMe :-)

Allerdings :D

Mich würde mal interessieren was für ein PW du da gehasht hast. Oder noch besser den kompletten SourceCode von beiden Exen. Wäre super , wenn du diese rausgeben würdest ;)
 
Original von +++ATH0
Ich hoffe das war mal ein abwechselungsreiches CrackMe :-)

Allerdings :D

Mich würde mal interessieren was für ein PW du da gehasht hast. Oder noch besser den kompletten SourceCode von beiden Exen. Wäre super , wenn du diese rausgeben würdest ;)

Hi ATHO =)
ein sehr gutes tut was du gechrieben hast)
also ich habe auch das mit der exe.resource gemerckt ,aber habe von diesem crypto absolut nix gehört,bzw kann auch nicht patchen(

@KarlRanseier
echt hart das teil)
gibts du den source code mal zu studie frei?
währe dir sehr dankbar =)
Greetz
KingSuperfly
 
Patchen von IL-Code ist nicht so schwer (zumindest von kleinen Mengen Code ;) ). Im Reflektor auf IL umschalten und dann jeweils die richtige Stelle suchen und mit der Maus drüber fahren - schon hat man den Hexcode dafür (fürs jumpen wäre es 0x2c) allerdings wäre ein "vollwertiger" IL-Debugger besser. So müsste man nicht erst rausfinden wie groß die "Opcode" Befehle sind und was sie einzeln bedeuten.
Hier gibts den Patch und eine Minilösung:
http://www.buha.info/board/showthread.php?t=49558
allerdings für so eine Komplettlösung wie ATH0 wär ich persönlich viel zu faul ;)

SHA1 Bruteforcer lief bei mir ca.7 Stunden lang und kam erst in den 6 stelligen Buchstabenbereich (habe den deshalb auch beendet).
 
Arrrr, ich seh grad, dass du viel schneller fertig warst als ich " 13:44". Dabei hatte ich noch viel mehr zeit. ;( ;)

Dein Proggi Ascii2Bin ist ja ganz brauchbar. :) Haste das extra für dieses Crackme geschrieben ?
Praktisch. Jetz muss ich für sowas nicht immer extra die ewig lange brauchende Delphi-IDE starten :D
 
Haste das extra für dieses Crackme geschrieben
Ja, hab bist jetzt keine Olly Plugins verwendet und auf die Schnelle nichts gefunden was es machen könnte. Das Programm ist übrigens sehr primitiv,API lastig (Write und Readfile) und fehleranfällig - eben nur fürs Crackme brauchbar ;) . Ich hatte ja ein ähnliches (BMP 2 ASCII Coord) für jemanden geschrieben - nur eben die Routine schnell ersetzt.
Das shadow-plugin muss ich mal ausprobieren. Wobei so ein "markierung2bin" Plugin auch ganz praktisch wäre *überleg*
 
Zurück
Oben