Nudzi Ci się? Złam CrackMe
Cześć, po przeczytaniu wywiadu z panem Dawidem Farbańcem odezwał się do mnie tajemniczy nieznajomy, który pragnął pozostać tajemniczym i prosił, żeby wręczyć mały challange dla pana Farbańca w postaci CrackMe.
Zadaniem jest napisanie keygena, no patch, wpisujcie się komentarze moje małe reverse engineerowe potworki jeśli coś ciekawego zwróci waszą uwagę lub uda wam się je rozwiązać.
Download – cm.zip
Póki co mam serialik, nad keygenem pomyślę, troszkę zagmatwane.
name: 0xDC
pass: 26242560
Dość niestandardowy jak dla mnie odczyt danych wejsciowych i zapis danych wyjsciowych, tworzenie nowego wątku dla zmyłki.
Jest i keygen: http://www.mediafire.com/?lco23h013qpho9d
Pozdrawiam,
Dawid Chałupka
@Dawid: gratuluję :), jakieś komentarze odnośnie analizy?
@Dawid: za mało, przeoczyłeś coś ważnego 😛
C:\tmp>cm
name: Farbaniec lubi lody kakaowe
pass: 1126170624
shit.
Niczego nie przoczyłem, po prostu nie ustawiłem tak dużego bufora, przez co tylko część Twojego „name” została uwzględniona. Ale proszę bardzo, zabezpieczyłem na taką ewentualność: http://www.mediafire.com/?ddkbskp6xbfpfyo.
W kwestii analizy, crackme nie było takie trudne na jakie wyglądało. Wszystko dlatego że algorytm generujący serial był banalny i jedynie trochę zaciemniony. Zaskoczyła mnie tylko, jak już wspomniałem metoda odczytu (funkcja _read), zapisu danych (funkcja _write), docelowo używana do zapisu i odczytu pliku a nie do konsoli oraz nieznana mi dotychczas funkcja tworzenia nowego wątku _beginthreadex. Muszę chyba przyjrzeć dllce msvcrt nieco bliżej.
Także jeżeli chodzi o sam algortym to nie postarałeś się „tajemniczy twórco” :), a oto mały przykładzik(losowy):
name: Farbaniec lubi lody kakaowessdasdsdsdddd
pass: 0
good.
Bart (kiedyś xt ;)) zrobiłby to 100x lepiej, tak że nie widziałbym o co chodzi ;).
Pozdrawiam wszystkich którzy odwiedzają tego bloga od czasu do czasu, pana Farbańca(nie przeglądałem jego książki), tajemniczego twórcę :), oraz ciebie Bartoszu(bart) 😉
> zrobiłby to 100x lepiej, tak że nie widziałbym o co chodzi
Takie było zamierzenie, dać najbanalniejszy możliwy algorytm zaraz po sumie znaków i zobaczyć, czy ktoś to ogarnie ;]. Przy tym cm wystarczy nie spanikować i ew. zrozumieć layout kodu, żeby nie grzebać się po internalsach runtime’u GHC. Wierz mi, gdybym chciał napisać trudne crackme to bym to zrobił, to tylko taka mała prowokacja, w końcu nawet w tytule postu wisi „proste”, czyż nie? ;]
To nie ja tylko autor tego crackme lubi lody kakaowe. Ja lubię truskawkowe.
Ciekaw jestem jeszcze czy pan Farbaniec który zna asemblera a nie ma żadnej nawet najmniejszej wiedzy(a może ma?) na temat crackingu wykonał zadanie. Udało się?
Szanowny Panie Dawid Ch., moja wiedza na temat crackingu i RE jest naprawdę mała. Nie wykonałem tego zadania, nie potrafię odnaleźć algorytmu w tym crackme, jest tam za dużo kodu jak dla mnie i program jest napisany w nieznanym mi języku. Ja RE przeważnie używałem do wyciągania danych z serwerów trojanów lub keyloggerów. Wystarczy prosta obfuskacja lub packer i nie potrafię ruszyć z miejsca :/ Nie znam także za dobrze budowy PE, poległem przy pisaniu exe packera dla PE, zrobiłem za to packer w C# dla .NET. Jeżeli jednak chodzi o napisanie programu w Asm to nie ma żadnego problemu.