ESQUiRE CrackMe

Tematem tego skromnego tutorka bedzie programik typu crackme noszacy dumna nazwe Crackme.exe (310272 bajty). Na poczatku rozmiar pliku przerazil mnie nieco bo myslalem, ze jest tam masa róznych sztuczek i kruczków, albo jakies zaawansowane szyfrowanie, a w dodatku grupa ESQUiRE deklaruje, ze przyzna czlonkostwo osobie która zlamie tego progsa. Jak sie okazalo moje obawy byly bezpodstawne.

Zaczynamy:

Co              : Crackme.exe (310272 bajty)
Czym            : W32Dasm 8.93
Poziom trudnosci: Beginner

Po zaladowaniu programu do WDasma (CRT-L) i uruchomieniu go (F9) wybieramy z menu REGISTER. Ukazuje sie okienko z prosba o wpisanie NAME i REGISTRATION CODE. Ja jako przykladowe dane wpisalem:

NAME: Jo Joro / CrackPL
REGISTRATION CODE: 78787878

Po nacisnieciu przycisku TRY! ukazuje sie komunikat którego moglismy sie spodziewac:

"Nope, try again"

Wobec tego, musimy odszukac w programie ten kawalek kodu, który jest odpowiedzialny za wywolanie tego komunikatu. W zwiasku z tym z menu (W32Dasm-a oczywiscie) wybieramy Refs\String Data References. Pojawi nam sie okienko z wypisanymi róznymi komunikatami wystepujacymi w programie.

Odszukujemy "Nope, try again" i klikamy go dwukrotnie. Spowoduje to znalezienie i wyswietlenie czegos takiego:

* Possible StringData Ref from Code Obj ->"Nope, try again" 
                                  |
:0044117E BA48124400              mov edx, 00441248        --------------->>>>>>>>> Tu jestesmy
:00441183 A1142C4400              mov eax, dword ptr [00442C14]
:00441188 8B00                    mov eax, dword ptr [eax]
:0044118A E881CDFFFF              call 0043DF10

Teraz musimy znalezc miejsce z którego nastepuje skok do naszego komunikatu o bledzie. Patrzac nieco wyzej dostrzegamy:

* Referenced by a (U)nconditional or (C)onditional Jump at Address: \

|:00441151(C) <<<<<<<------------------------------------ >>>>>>>>> Spod tego adresu nastepuje skok!

|
:00441177 6A30                    push 00000030

* Possible StringData Ref from Code Obj ->"Wrong"
                                  |
:00441179 B940124400              mov ecx, 00441240

* Possible StringData Ref from Code Obj ->"Nope, try again" 
                                  |
:0044117E BA48124400              mov edx, 00441248        --------------->>>>>>>>> Tu jestesmy
:00441183 A1142C4400              mov eax, dword ptr [00442C14]
:00441188 8B00                    mov eax, dword ptr [eax]
:0044118A E881CDFFFF              call 0043DF10

Wiec juz wiemy skad nadchodzi niebezpieczenstwo! Trzeba sie temu blizej przyjrzec! Odszukujemy wiec adres 00441151.

:0044114C E8F329FCFF              call 00403B44 ---------->>>>>>> Procedura sprawdzania poprawnosci wpisanego numerka.
:00441151 7524                    jne 00441177 -------------------->>>>>> Jestesmy tutaj.
:00441153 6A40                    push 00000040

A wiec (nigdy nie rozpoczynaj zdania od wiec ;) to tutaj program decyduje czy pogratulowac ci czy tez wyslac do diabla. Mozna przypuszczas ze procedura sprawdzenia poprawnosci wpisania seriala znajduje sie w call-u.

Ale spójrzmy co znajduje sie ponad call-em!

:00441146 8B55F4                  mov edx, dword ptr [ebp-0C]
:00441149 8B45FC                  mov eax, dword ptr [ebp-04]

To sa pewnie jakies wartosci, których call bedzie potrzebowal. Sprawdzmy wiec co znajduje sie w edx.

W tym celu zastawiamy pulapke na tej instrukcji F2, wpisujemy do crackme nasze wydumane haselko i jazda.

Po chwili program zatrzyma sie na instrukcji na której zastawilismy pulapke. Wciskamy F8 aby to czego oczekujemy znalazlo sie w EDX i sprawdzamy w okienku z danymi.....

No tak W EDX mamy 78787878 !!! czyli ten numerek który wpisalismy, wiec cóz za licho siedzi w EAX ?

Wciskamy F7 i sprawdzamy. W EAX siedzi jakis dziwny numerek 59382448403057022. Jesli jeszcze nie wiesz co to za numer to wejdz do Call-a (F7) i po kilku wcisnieciach F7 dojdziesz do instrukcji:

:00403B4B 39D0 CMP EAX, EDX.

No chyba widac jak na dloni ze jest tu porównywany nasz numer (EDX) z tym nic nie mówiacym nam do tej pory numerem z EAX. Chyba dalej nie trzeba pisac co trzeba czynic!

Podsumowujac :

Wpisujac

NAME: Jo Joro / CrackPL
REGISTRATION CODE: 59382448403057022

zarejestrujemy program i otrzymamy czlonkowstwo w grupie ESQUiRE ;)

Jo Joro