Wątek zablokowany 2012-11-02 13:08 przez Demonical Monk.

CrackMe dla kogoś wyjątkowego

9

Cześć, po przeczytaniu wywiadu z panem Farbańcem

http://www.secnews.pl/2012/06/14/wywiad-z-dawidem-farbancem/

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

http://www.secnews.pl/wp-content/uploads/2012/10/cm.zip

Jeśli kogoś interesują tematy związane z reversingiem, sądzę, że to cm będzie bardzo ciekawe.

@0DFh czy przyjmiesz wyzwanie i stworzysz keygena do CrackMe?

2

Już widzę setki chętnych, którzy dla sztuki będą reversować haskelowy algorytm, który wygenerował się do odpowiednika kilku tysięcy linii kodu w C.

edit: dobra, odpaliłem go pod debuggerem i faktyczny algorytm jest krótki.
edit2: a w sumie to dunnoh. Ciężko mi się przebić przez tą wielowątkowość.

1

No ja właśnie się tak zastanawiam jak ciekawie musi wyglądać haskelowy kod w asemblerze :D

16

Haskell? Będzie na mnie... A tak serio: proste i przyjemne, kod na początku wygląda ciekawie, mimo wszystko nie stanowi wyzwania. @0DFh powinien dać sobie radę gdyż na forum haker.com.pl jest od gimnazjum :P.

3

Ciężka sprawa, wydaje mi się że powoli dochodzę do rozwiązania, póki co udało mi się znaleźć jedną parę dla mojego nicku.

user image

Ale debugger był cały czas w ruchu. Póki co poczekam na naszego lokalnego eksperta od asemblera, myślę że Pan Dawid Farbaniec to swego rodzaju klasyk gatunku i takie rzeczy zjada na śniadanie. Jeśli odwiedzi Pan ten wątek: czy mógłby Pan przedstawić dokładne rozwiązanie po napisaniu keygena? Chciałbym nauczyć się czegoś nowego, może następna książka o zastosowaniu asemblera w reverse engineeringu?

2

*Siada przed kompem z miską popcornu*

1

Coś mi się zdaje, że na tym się skończy to wyzwanie ;]

1

Czkiken Farbaniac? czyjakmutam...

ps. ten kolo pożywia się każdą treścią na jego temat, on się wręcz masturbuje każdym komentarzem na swój temat.
Proponuję totalną ignorancje. Ja już zaczynam.

1

Dajcie spokój Farbańcowi. Tym którzy naprawdę chcą się nauczyć sztuki reversowania polecam książkę:
Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software
No i oczywiście tutoriale Leny na tuts4you:
http://tuts4you.com/download.php?list.17

Dotego można dożucić jeszcze Art Of Assembly Language - Randal Hyde

Reszta to praktyka....

2

CrackMe jest dla kogoś wyjątkowego, więc raczej nie dla mnie, jestem zwykłym programistą, który się wciąż uczy.

Autor crackme nie ma nawet odwagi podać swojej tożsamości. Mama od dziecka mi mówiła, żebym nie brał nic od obcych.

Zrobił aplikację konsolową w jakimś nieznanym mi języku i myśli, że będę grzebał w 628 kilobajtowym exeku.

Ja teraz proponuję anonimowi, niech napisze tutorial jak to rozwiązać, jakich narzędzi użyć oraz niech stworzy keygen do tego crackme w Asemblerze. Dużo osób na pewno na tym skorzysta.

2
0DFh napisał(a):

Autor crackme nie ma nawet odwagi podać swojej tożsamości. Mama od dziecka mi mówiła, żebym nie brał nic od obcych.

Czyli przyznajesz, że nawet nie potrafisz bezpiecznie przedebugować crackme z nieznanego źródła? Profesjonaliści nigdy nie wykręcają się w ten sposób, a Ty deklarujesz jakobyś był profesjonalistą.

0
Demonical Monk napisał(a):

przyznajesz, że nawet nie potrafisz bezpiecznie przedebugować crackme z nieznanego źródła?

Zrobił aplikację konsolową w jakimś nieznanym mi języku i myśli, że będę grzebał w 628 kilobajtowym exeku.

Demonical Monk napisał(a):

Ty deklarujesz jakobyś był profesjonalistą.

Gdzie napisałem słowo "profesjonalista" w stosunku do siebie samego?

2

...na forum haker.com.pl jestem od gimnazjum, pomagam tam w programowaniu (C, C++, C#, WinAPI, Asm), RE i usuwaniu złośliwego oprogramowania oraz wydałem książkę o Asemblerze, która jest najchętniej kupowaną książką o Asemblerze w Helionie oraz dostałem zlecenie na kolejną książkę od tego wydawnictwa.

No to chyba jednoznacznie świadczy o tym, że z Ciebie specjalista światowej klasy ;)

4

Jakie techniczne strony internetowe najczęściej odwiedzasz?

masm32.com, winasm.net, MSDN, cplusplus.com

Jak mógł nie podać 4programmers :/

0

Czy gdyby plik EXE miał inny rozmiar, to byś w nim grzebał? Co ma wspólnego rozmiar pliku EXE z tym, że nie chcesz się podjąć tego zadania?

Przed murzynami i innymi najeźdźcami naszej Ojczyzny nie tchórzysz, a tchórzysz przed takim małym exekiem? :P

1

@0DFh: W takim razie ode mnie propozycja z innej beczki w załączniku. Zgodnie z Twoimi wygórowanymi żądaniami crackme jest w języku który znasz, a plik jest niewielki :)
Wykażesz się tym razem? Tak jak i poprzednio zabawka jest prozaicznie prosta, głównym celem zadania w tym wypadku jest napisanie wydajnego keygena.

3
D:\Pobrane>dir /b license.txt
license.txt

D:\Pobrane>cm "Demonical Monk"
WTF Licensing System v. 0.1
Reading license...

GOOD!

Otrzymanie licencji z uprzednio wygenerowanymi kluczami dla dowolnego użytkownika trwa ułamek sekundy. Natomiast wygenerowanie owych kluczy trwa kilka sekund. Drugim minusem mojego keygeneratora jest to, że sposób generowania samej licencji jest stały dla każdego użytkownika. Oznacza to, że istnieje przyszła możliwość zablokowania wszystkich moich licencji (no chyba, że metoda producenta była taka sama ;)). Ale ten problem akurat jest prosty do rozwiązania.
Ale działa, pobawiłem się z tym trochę. Samego keygeneratora nie udostępniam, niech inni też popróbują. Być może tym, którzy mają trudności pomoże gotowa licencja w załączniku (dla użytkownika "Demonical Monk").

3
J:\GameDev\Kgen>cm deus
WTF Licensing System v. 0.1
Reading license...

GOOD!

http://dev.keraj.net/license.txt

0
C:\crackme>cm.exe 0DFh
WTF Licensing System v. 0.1
Reading license...

GOOD!

Crack w załączniku.

0
0DFh napisał(a):
C:\crackme>cm.exe 0DFh
WTF Licensing System v. 0.1
Reading license...

GOOD!

Crack w załączniku.

Świetnie, jeden bajt w IFie to i ja umiałem zmienić.
Napisałem wcześniej:

głównym celem zadania w tym wypadku jest napisanie wydajnego keygena

Poza tym sam się boczyłeś że dajemy zbyt duże binarki? ;) To jak z tym keygenem?

0
Demonical Monk napisał(a):

Świetnie, jeden bajt w IFie to i ja umiałem zmienić.

Nie zmieniłem jednego bajtu. Napisałem crack w Asemblerze, który wstawia w miejsce skoku warunkowego dwie instrukcje NOP, co powoduje, że program przyjmie każdy keyfile.

Demonical Monk napisał(a):

To jak z tym keygenem?

Nie mam czasu na głębszą analizę tego algorytmu. Jestem na IV roku studiów. W rzeczywistych systemach nie ma zasad, że musi być generator plików kluczy, dlatego wszystkie chwyty dozwolone, poszedłem najkrótszą drogą :) Zabezpieczenie złamane.

2

Na IV roku studiów? To faktycznie masz "dużo" roboty...
Zabezpieczenie nie zostało złamane, od początku było wyraźnie napisane o keygenie (i jak widać dwie osoby które rozwiązały to przed Tobą to zrozumiały)...

W rzeczywistych systemach nie ma zasad, że musi być generator plików kluczy, dlatego wszystkie chwyty dozwolone, poszedłem najkrótszą drogą

A gdyby to był fragment kodu wrzuconego na mikroprocesor? Pensetą byś go patchował? Każde wyzwanie ma pewne założenia, inaczej nie byłoby zabawy ;)

Ze wszystkich możliwych sposobów na patcher wybrałeś najbardziej lamerski z możliwych. Mianowicie: otwórz -> seek:

.text:00401176                 push    0               ; dwMoveMethod
.text:00401178                 push    0               ; lpDistanceToMoveHigh
.text:0040117A                 push    lDistanceToMove ; lDistanceToMove
.text:00401180                 push    hFile           ; hFile
.text:00401186                 call    SetFilePointer

-> nadpisz:

.text:004011A0                 push    0               ; lpOverlapped
.text:004011A2                 push    offset NumberOfBytesWritten ; lpNumberOfBytesWritten
.text:004011A7                 push    nNumberOfBytesToWrite ; nNumberOfBytesToWrite
.text:004011AD                 push    offset unk_404004 ; lpBuffer
.text:004011B2                 push    hFile           ; hFile
.text:004011B8                 call    WriteFile

-> zamknij.
Ten patcher nie będzie działał gdybym chociażby przekompilował program, więc nawet nie można tego nazwać sensownym patcherem.

4

NOPami to gimbusy tibię hakują, żaden wyczyn. BTW, NOP to chyba ulubiona instrukcja nazioli, nie? Fajnie to tak chwalić się cudzym templatem keygenów?

4

Już wiem jak się rodzi przemoc.

//poza tym, DF, zawiodłeś mnie. Myślałem że podejmiesz wyzwanie, a Ty po prostu zmieniłeś instrukcje skoku warunkowego. No proszę Cię, to by nawet zrobiła
Twoja dziewczyna! Ba, do tego nie trzeba wcale znać asemblera. Tak tak, taką bzdurę hexedytorem mogą zrobić ludzie nie umiejący programować w asm, a Ty podobno umiesz programować w tym języku. Już Cię nie lubię.

0

@0DFh: Czyli wnioskuję że poddajesz się i nie próbujesz regulaminowo rozgryźć tego zadania?
Niedawno pytałeś mnie jak zyskać reputację na forum, jestem zawiedziony że nie skorzystałeś z szansy którą Ci dałem, ale wciąż masz okazję ;)

1

Skoro tak się uparłeś na crackme to tutaj jest ulepszona wersja:

http://monk.4programmers.net/pub/research/cm/

Inny seed, stare licencje nie będą działać, anyway algorytm ten sam. Może być albo keygen albo patcher ;)
Skorzystasz z szansy na podniesienie swojej reputacji na 4p? ;)

0

Jestem programistą Asemblera i napisałem książkę o programowaniu w Asemblerze. Nie jestem crackerem. Dodatkowo jak już pisałem, nie potrzebuję nikomu niczego udowadniać. Będę robił dalej swoje (pisał książki, artykuły, aplikacje), gdyż w tym czuje się pewnie i dobrze. EOT.

5
0DFh napisał(a):

Jestem programistą Asemblera i napisałem książkę o programowaniu w Asemblerze. Nie jestem crackerem. Dodatkowo jak już pisałem, nie potrzebuję nikomu niczego udowadniać. Będę robił dalej swoje (pisał książki, artykuły, aplikacje), gdyż w tym czuje się pewnie i dobrze. EOF.

EOF = End Of Farbaniec? xD

0

@0DFh
Człowieku tutaj nikt cię nie minusuje bez powodów. Wydałeś książkę==jesteś w jakimś stopniu ekspertem. A przynajmniej znasz się na rzeczy, na tyle aby poradzić sobie z PROSTYM zadaniem przed jakim może stanąć programista asm. I nie musisz być crackerem, żeby przetestować legalnie swoje możliwości. Udowodnij to co umiesz zostanie to docenione, a przynajmniej społeczność da ci spokój. Twój pr tu nic nie da.

0

Dla wszystkich: nie podejmę się zadania. Po co mam rozwiązywać zadania od Was, wiem co potrafię, nie muszę tego udowadniać.
Do administracji: Tak się tutaj traktuje użytkowników? Rzuca się ich nazwiskiem na prawo i lewo? Wyśmiewa na każdym kroku? Dziękuję bardzo za takie dyskusje. Właśnie mi przyszedł do głowy pomysł na ostatni rozdział mojej nowej książki. Będą tam greetzy i oczywiście fucki, między innymi na Was :) Bez odbioru.

1 użytkowników online, w tym zalogowanych: 0, gości: 1