		--==WOJ2==--
	--==PROUDLY      PRESENTS==--
--==CrackME v.3.0 by tEo [CHInc.] TUTORIAL==--
	--==      11.08.2005     ==--
                --==cRaCk==--


---------------------------------------------

Co: CrackME v.3.0 by tEo [CHInc.]
Czym: SoftIce, win32asm (do listingu), ewentualnie Cracker's Calculator by QUASAR/HTB
Poziom: Newbies+(?)
Wynik: key

---------------------------------------------

(Polecam czytanie w Notatniku, z zawijaniem wierszy, ale jak nie lubisz to nie:P)

Przespaem si z CracKME #o1 produkcji tEo no i nasta nowy pikny (deszczowy) dzien wiec zabraem si do v.3.0 (bo 2 nie mam:P). No to do dziea:P

Wchodzimy do CrackME wpisujemy jakies tam haselko np. 'Eat my crap':) Clickamy Check It! po uprzednim ustawieniu puapki na GetDlgItemTextA... Wskakujemy w SI i...

* Reference To: USER32.GetDlgItemTextA, Ord:0102h
                                  |
:004010F2	Call 00401442			//wywoanie funkcji
:004010F7	test eax, eax			//sprawdza czy cos wpisalismy
:004010F9	jz 004012FF			//jesli nie to skok do badboy
:004010FF	mov ecx, dword ptr [00403018]	//4 literki haselka do ecx
:00401105	mov edx, dword ptr [00403000]	//4 literki prawidlowego hasla (?) do edx
:0040110B	cmp ecx, edx			//porownoje wartosci
:0040110D	jz 004012F1			//jesli rowne to skok
:00401113	mov ecx, dword ptr [0040301B]	//jw.
:00401119	mov edx, dword ptr [00403003]	//jw.
:0040111F	cmp ecx, edx			//jw.
:00401121	jz 004012F1			//jw.
:00401127	mov ecx, dword ptr [0040301F]	//jw.
:0040112D	mov edx, dword ptr [00403007]	//jw.
:00401133	cmp ecx, edx			//jw.
:00401135	jz 004012F1			//jw.
:0040113B	jmp 00401144

Hmmm... Ten kawalek wydaje sie interesujacy... Ale to bylo by zbyt proste... Aby to sprawdzic wejdzmy w jeden z JZ-ow. Jest to skok do MessageBoxA. Czyby to bylo to?? Hehe "This is Illegal Serial". To chyba jednak nie to. Mona powiedziec ze to taka sztuczka ANTI-LAME. Jak wejdziemy do jakiegos heXedytora to zobaczymy, ze numerek, z ktorym jest porownywane nasz haselko jest tak wyeksponowany, ze trudno go nie zauwazyc. Niektorzy szukaja gotowego seriala pod hexeditorami no i to jest dla nich cios w plecy:P No wiec olewamy to i wchodzimy w tego JMP na samym dole.

:004011D5	xor eax, 00000005		//xoruje eax z 5
:004011D8	add eax, 74456F60		//eax+74456f60
:004011DD	cmp eax, 74456F71		//porownuje eax z 74456F71
:004011E2	jnz 004012FF			//jesli nie rowne to skok
:004011E8	jmp 004011F1

Jak wiemy GetDlgItemTextA w eax zapisuje liczb odczytanych liter. Ten kawaek kodu przeprowadza obliczenia na tej liczbie i na koncu wynik porownje z 74456F71. Wiec sprawdza on liczbe liter w hasle, tylko nie zwyklym CMP ale troche bardziej skomplikowana metoda:) Aby sie dowiedziec ile liter ma miec haselko musimy oczywiscie to odwrocic.

mov eax, 74456F71
sub eax, 74456F60
xor eax, 00000005

I wychodzi nam 14h=20d czyli haselko musi miec 20 znakow! Wpisujemy jakies 20 literowe haslo np. 11112222333344445555 i jedziemy dalej!

:004012A1	mov eax, dword ptr [00403018]	//4 pierwsze literki hasla do eax
:004012A6	mov ebx, dword ptr [0040301C]	//4 nastepne literki do ebx
:004012AC	mov ecx, dword ptr [00403020]	//i znowu 4 literki do ecx
:004012B2	xor eax, ebx			//
:004012B4	xor ebx, eax			//
:004012B6	add eax, 0000DEAD		//OBLICZENIA
:004012BB	add ebx, 0000CAFE		//
:004012C1	add ecx, 00000BAD		//
:004012C7	cmp eax, 190451C8		//porownuje eax z 190451C8
:004012CC	jnz 004012FF			//jak nie rowne to badboy
:004012CE	cmp ebx, 52360F34		//porownoje ebx z 52360F34
:004012D4	jnz 004012FF			//jak nie rowne to badboy
:004012D6	cmp ecx, 334338E2		//porownuje ecx z 334338E2
:004012DC	jnz 004012FF			//jak nie rowne to badboy
:004012DE	jmp 0040114C

Ten fragment sprawdza pierwsze 12 literek hasla. Jak pewnie sie domyslacie trzeba go odwrocic, ale nie doslownie, trzeba to zrobic troszke inaczej (dlatego poziom napisalem newbies+). Ok postaram sie wszystko pokolei wytlumaczyc. Przyjmijmy tylko ze eax:1-4 litera, ebx:5-8 litera, ecx:9-12 litera. Okej liczymi eax.

mov eax, 190451C8
sub eax, 0000DEAD

Wklepujemy to albo do SI przy pomocy komendy a, albo korzystamy z Cracker's Calculator by QUASAR/HTB, albo liczymy w SI przez wpisanie ? i dziaania (oczywiscie mov pomijamy:)). Jakkolwiek to policzymy wychodzi 1903731Bh to nie sa jeszcze literki od hasla, bo trzeba to jeszcze zxorowac z ebx, a aby mozna bylo zxorowac trza to ebx policzyc:P

mov ebx, 52360F34
sub ebx, 0000CAFE

No i wychodzi 52354436h ale to tez jeszcze nie jest czesc haselka. Zostaly jeszcze tylko xorowanka (oczywiscie w odwotnej kolejnosci!)

eax = 1903731Bh ebx=52354436h
xor ebx,eax	= 4B36372D (do ebx)
Teraz mamy juz ebx, czyli 5-8 litery hasla.

eax = 1903731Bh ebx=4B36372D
xor eax,ebx	= 52354436 (do eax)

I w koncu wychodzi nam eax = 52354436 = 'R5D6' i ebx = 4B36372D = 'K67-'. Naley to oczywicie odwrocic. Do policzenia jest jeszcze ecx, ale to juz "kaszka z mleczkiem":)

mov ecx, 334338E2
sub ecx, 00000BAD

Od liczby z ktora porownywany jest ecx, odejmujemy BADh i mamy wynik 52354436h czyli '3C-5'. Teraz mozemy ulozyc 12 pierwszych literek. Wyjdzie nam '6D5R-76K5-C3', ale to jest dopiero 12 znakow, jeszcze 8 do skraczenia:P Sprobuj zlamac je sam, to prosta sprawa. Po przeczytaniu tej czesci powinienes to zrozumiec i nie powinno Ci sprawic klopotu zlamanie reszty hasla.
.
.
.
.
.
.
.
.
.
.
.
.
.
Nic. No to jedziemy dalej.

:004011FD	mov eax, dword ptr [00403024]	//13-16 literka hasla do eax
:00401202	mov ebx, dword ptr [00403028]	//17-20 literka hasla do ebx
:00401208	xor eax, ebx			//
:0040120A	add eax, 74456F60		//OBLICZENIA
:0040120F	sub ebx, 74456F60		//
:00401215	cmp eax, 74A8E060		//porownuje eax z 74A8E060
:0040121A	jnz 004012FF			//bad boys
:00401220	cmp ebx, CF08D9E8		//porownuje ebx z CF08D9E8
:00401226	jnz 004012FF			//bad boys 2:)
:0040122C	jmp 004012E3

Ten kawalek jest nawet latwiejszy od tego pierwszego (przynajmniej mi zaja mniej czasu i nerwow:P). Jak zwykle wystarczy wszystko dobrze odwrocic i bedzie cacy:P No to do dziela! Najpierw bierzemy sie za eax (13-16 znak). Od wartosci, z ktra jest porownywany trzeba odjac 74456F60.

mov eax, 74A8E060
sub eax, 74456F60

Wyjdzie z tego 637100h i ten wynik bedzie siedzial w eax. Teraz czas na ebx.

mov ebx, CF08D9E8
add ebx, 74456F60

No i w ebx mamy 434E4948 czyli 17-20 literki czyli 'CNIH'. Ale to jeszcze nie wszystko:) jeszcze zostalo eax, ale to tylko xorowanie.

xor eax,ebx

W koncu koniec:D Wynik wychodzi 432D3848 czyli nasze kochane 13-16 literki czyli 'C-8H'. Teraz skladamy te literki do kupy i dodajemy do wczesniejszych znakow i mamy nasze upragnione haslo czyli: '6D5R-76K5-C3H8-CHINC'.
Uff to juz koniec. Ale jak zwykle bonusik (?) dla osob czytajacych tutki do konca. Oprocz tego hasla "ANTI-LAME", tEo w tym crackme wrzucil jeszcze troche kodu "straszaka", ktry nawet nie jest wykonywany i jeszcze cos takiego, co utrudnia ogladanie kodu pod win32asm. RESPECT tEo! Poza tym czesto w obliczeniach jako jeden z operadnow pojawia sie jego xywa:)

No i to ju naprawde koniec. Jesli masz jakies watpliwosci, pytania, znalazles jakies bledy lub poprostu chcesz pogadac mail-me: woj2s@vp.pl

---------------------------------------------------------------------------------------------

Teraz to co wszyscy lubi najbardziej, czyli
GREETZY:)

  GGGG   RRRR   EEEEEE  EEEEEE  TTTTTTT  ZZZZZZ
GG    G  R   R  E       E          T         Z 
G        R   R  EEE     EEE        T        Z
G   GGG  RRRR   EEE     EEE        T       Z
GG   GG  R  R   E       E          T      Z
 GGGGG   R   R  EEEEEE  EEEEEE     T     ZZZZZZ


  GGGG     OOOO    EEEEEE  ZZZZZZ
GG    G   O    O   E           Z
G        O      O  EEE        Z
G   GGG  O      O  EEE       Z
GG   GG   O    O   E        Z
 GGGGG     OOOO    EEEEEE  ZZZZZZ


TTTTTTT    OOOO
   T      O    O
   T     O      O
   T     O      O
   T      O    O
   T       OOOO


tEo (4 crackme)
Iczelion (4 gr8 asm tutorial)
Quasar (4 Calc)

&

Ufcio, ReWolf, Butthead, Smola, Jube, Smola, Jopas, Veneta, Strength

&

all Polish crackers & crack teams
You keep crack scene alife...