Skip to content


Cracking dla opornych cz. I

Nikt na pewno nie wie co to jest cracking i na pewno nikt nie ma zcrackowanego softu na swoim komputerze. Na pewno nikt nie chce wiedzieć jak się taki crack do programu pisze, ale i tak w celach zupełnie edukacyjnych sprobuję coś na ten temat napisać. Wybierzemy najprostsza metodę ale przeważnie najskuteczniejszą – patching, czyli będziemy zmieniać sam plik wykonywalny jakiegoś programu, w dodatku będzie to plik pod M$ Wndows – sposób crackowania jest zależny od platformy.

Do złamania zabezpieczeń będzie nam potrzebnych kilka narzędzi (use google) :
Debugger : może być np. SoftICE albo OllyDbg (ja osobiście wolę ten drugi – http://www.ollydbg.de/)
Disassembler (W32Dasm – najlepszy)
Hex Editor (oczywiście HackerView – http://webhost.kuzbass.net/~sen/)
i crackowany soft.

Crackers.jpg

Weżmiemy coś takiego, aby nikt nie powiedział że jesteśmy „piratami”. Sa strony z tzw. Crackmes’ami – programiki napisane tylko po to by je złamać (oczywiście maja bardzo podobne zabezpieczenia jak poważne programy „komercyjne”). Proponuje crackmes www.quequero.org/crackme/filez/crackme04.zip (oczywiście zapraszam też na stronki www.quequero.org/ czy www.crackmes.de)

Aby się nie przemęczać zrobimy pierwszy łatwy crack. Ponieważ jesteśmy lamami nie będziemy szukać właściwego seriala, ale złamiemy zabezpieczenie, aby program pokazał nam upragniony napis o „rejestracji” programu. W innych programach może być odwrotnie – trzeba usunąć pokazujący się komunikat….robi się to analogicznie, ale to może innym razem.

Odpalamy programik crackme04.exe i jedziemy – wpisujemy np. Lama i 12345, naciskamy Register i…… nic, program stoi i nic nie pokazuje. No to do roboty !!

Uruchamiamy W32Dasm i wczytujemy plik, potem z menu „Refs” otwieramy opcję „String data reference” i… pokazują się nam wszystkie komunikaty jaki program wyświetla w czasie działania! Klikamy na „REGISTERED” – program wskakuje na pozycję 004014E8 no i mamy pierwsze info, które zaraz wykorzystamy.

Odpalamy OllyDbg i wczytujemy plik (F3). Przesuwamy na pozycję 004014E8. Zaraz nad nią jest instrukcja skoku JNZ, która przeskakuje nad naszym upragnionym napisem, co się oznacza że musimy ją zmienić na JZ (odwrotność skoku JNZ – assembler rulez) – naciskamy spację i w oknie Assemble zmieniamy JZ na JNZ (widzimy na czerwono zmienioną wartość 74 – było 75). Niestety jak popatrzymy wyżej jest jeszcze parę takich skoków które przeskakują nad naszym komunikatem, a więc przewijamy do góry, aż dochodzimy do wywołania funckji GetDlgItem. Ta funkcja jest odpowiedzialna za wczytanie danych z okienek dialogowych, czyli tam gdzie mamy Lama i 12345.

W miejscu :

004013FC . FFD3 CALL EBX ; |\GetDlgItem
004013FE . 8B3D D4214000 MOV EDI,DWORD PTR DS:[<&USER32.SendMessa>; |USER32.SendMessageA
00401404 . 50 PUSH EAX ; |hWnd
00401405 . FFD7 CALL EDI ; \SendMessageA
00401407 . 83F8 05 CMP EAX,5
0040140A 0F8C 37010000 JL Crackme0.00401547

Sprawdzana jest długość nazwy – 5 znaków, tu musimy zrobić pierwszą zmianę – JL zmieniamy na JNL. Spowoduje to że możemy wpisać cokolwiek co ma <> 5 znaków. Jeśli chcemy aby można było wpisać cokolwiek o dowolnej długości – wpisujemy skok do następnej instrukcji, czyli JL 00401410. Idziemy dalej – F9. Program oblicza to co wpisaliśmy do okien dialogowych, ale że nie zgadzają się przeliczenia chce

004014A1 . 83C4 2C ADD ESP,2C
004014A4 . 85C0 TEST EAX,EAX
004014A6 0F84 9B000000 JE Crackme0.00401547

znów uciec. Nie pozwalamy – zmieniamy JE na JNE w 004014A6. F9, dalej….i zblizamy się do naszego pierwszego momentu – 004014E4, jeśli wcześniej nie zmianilismy wartości z JNZ na JZ, zmieniamy ją teraz J. F9, iiiii ???? Program pokazał nam właściwy komunikat : „Well done, cracker”. No to cała robota za nami !!

Niestety jak zamkniemy program to stracimy zmiany, dlatego trzeba zpatchować plik. Otwieramy HackerView i wczytujemy nieszczęsny plik crackme04.exe. F4, wybieramy tryb Decode. F5 i wpisujemy pierwszy adres komórki do zmiany, czyli .0040140A (pamiętajmy o kropce przed adresem!!) – naciskamy F3 i 0F8C37010000 zmieniamy na 7C0490909090, potem drugi adres .004014A6 – 0F84 na 0F85 i ostatni .004014E4 – 75 na 74. Zapisujemy zmiany F9. Dla testu możemy już spokojnie odpalić program i wpisać co nam się podoba !!! Jakby się ktoś nudził, to może spróbować innych crackmesów.

Any comments ????

Posted in TechBlog.


7 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Siegfried says

    pewnie ze skomentuje – Olek sie chyba zakocha jak to zobaczy, teraz ktos mu musi jeszcze napisac program ktorym pogoni tych wstretnych cziterow ;]

    Tak btw: co znaczy znaczek J bo chyba mam niepelne wyksztalcenie internetowe ;)

  2. Siegfried says

    ja bym raczej nie zmienial JE na JNE na koncu, bo jak ktos zacznie wpisywac dobry klucz to dostanie apopleksji ;) najlepiej hakierowac skokami niewarunkowymi ;]

  3. SQ7RO says

    No way! :) Oczywiscie ze lepiej niewarunkowymi, ewentualnie NOPami w zaleznosci od sytuacji. Ale zakladam ze nie tak latwo wpisac dobry klucz :P

  4. SQ7RO says

    znaczek J powstao dziwnie kiedy pisalem to :) – po skopiowaniu na strone jakos mu buzka nie wychodzi i zostaje J :]

  5. SQ7RO says

    Będzie jeszcze druga część – żeby nie było że idę na łatwiznę :D

  6. Siegfried says

    sq7ro, a wez mi powiedz jedna rzecz – czy w miare latwy sposob jeden proces moze monitorowac pamiec drugiego procesu pod winda? czy tez moze musi go uruchomic jako swojego potomka?

  7. SQ7RO says

    moze, kazdy proces ma chyba swoj ID/nazwe, a wiec mozna sie do tego odwolywac. Potem mozna tylko wpisywac jakas wartosc do danej komorki i nawet jesli program cos zmieni, nasz zmieni na swoja z powrotem… Jest nawet w Olly opcja Attach – podlaczenie do juz aktywnego procesu.



Some HTML is OK

or, reply to this post via trackback.