		--==WOJ2==--
	--==PROUDLY      PRESENTS==--
--==JUBE'S CRACKME         V1.00 TUTORIAL==--
	--==      17.06.2005     ==--
                --==xXxXx==--


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

Co: Jube's CrackMe v 1.00
Czym: SoftIce, MASM32
Wynik: patch + key + keygen

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

(Jeli czytasz to w Notatniku to wcz zawijanie wierszy)

Witam! W tym tutorialu poprowadz Ci, przez cay proces crackowania CM produkcji Jube. Jest ono bardzo proste (nawet ja je zamaem:)), wic najpierw sprbuj si za nie zabra bez tego poradnika.
ZACZYNAMY!!!!!

0) Zaczynam od punktu 0, poniewa nie jest on potrzebny do crackowania tego CM, ale trzeba wykona t czynno, aby pobra listnig z programu i go tu wrzuci:) No wic programik jest spakowany, wic eby wycign listing z w32dasm, trza go najpierw rozpakowa (to chyba oczywiste:)) Otwieramy sobie CM w jakim hex-edytorze (ja uywam WinHex) i patrzymy. Mona tam znale jakie wpisy od UPX'a wic wiadmomo czym progs jest spakowany. Aby go rozpakowa uywamy odpowiedniego programu (ja uywam ProcDumpa, tam jest ju skrypt na UPX'a). Jak ju pisaem wczeniej, nie uywaem win32dasm do kraczenia, wic Ty t czynno moesz pomin.

1) Okej. Uruchamiamy CrackMe v1.00 wpisujemy jakie dane np. Name: Woj2 Key: 30101990. Wyskakuje messag o bdnym numerze. Ustawiamy puapki na GetDlgItemTextA i GetWindowTextA. Ta pierwsza nie dziaa, ale za to druga jak najbardziej. Ldujemy w takim miejscu

:004010C1        Call 004012BF             		//wywoanie funkcji GetWindowTextA
:004010C6        cmp eax, 00000000         		//porwnuje eax z 0
:004010C9        jz 00401186               		//jeli rwne to skok do messaga
:004010CF        cmp eax, 00000004         		//porwnuje eax z 4
:004010D2        jb 004011BC               		//jeli mniejsze to skok do messaga

Co ten kawaek robi?? Waciwie wszystko jest ju wytumaczone na grze. W eax jest liczba liter wpisanego name i procedura sprawdza czy nie jest on pusty i czy nie jest mniejszy od 4. Jeli tak to skacze do odpowiednich messagw.

2) Idc dalej natrafiamy na nastpny GetWindowTextA. Jak si pewnie domylasz ta procedura pobiera nasz key.

:004010E5        Call 004012BF				//wywoanie funkcji
:004010EA        cmp eax, 00000000			//porownuje eax z 0
:004010ED        jz 004011A1				//jesli rowne to skok
:004010F3        mov dword ptr [004021C2], eax 		//wpisuje do 004021C2 warto eax
:004010F8        mov eax, 004021CA			//wpisuje do eax nasz key
:004010FD     |--mov bl, byte ptr [eax]			//wpisuje w bl kolejny znak z eax
:004010FF     |  cmp bl, 00				//porwnuje go z 0
:00401102     |  jz 00401119				//jeli rwny to skok
:00401104     |  cmp bl, 30				//porwnuje go z 30
:00401107     |  jb 004011D7				//jesli mniejszy to skok
:0040110D     |  cmp bl, 39				//porwnuje go z 39
:00401110     |  ja 004011D7				//jeli wikszy to skok
:00401116     |  inc eax				//eax=eax+1 (nastpny znak)
:00401117     |--jmp 004010FD				//jump do gry

Jak wida jest to ptelka... Tylko do czego ona suy??? Po co porownuje znaki key'a z 30 i 39?? Spjrz na tablic ASCII i ju bdziesz wiedzia po co to jest. Sprawdza czy nasz key jest liczb! Kady znak jest sprawdzany czy jest wikszy od 0 i mniejszy od 9 (oczywicie nie dosownie tylko jego numer ASCII). Jeli co si nie zgadza to skok do messaga o bdnym kodzie. Po co to wszystko?? Ano dlatego, e niej znajduje si GetDlgItemInt i jak by ykn literk to by si wysypa! A jeli wszytko jest ok i cay key jest "przeskanowany", to w eax jest 0 i nastpuje skok do 00401119. A co tam jest?? Zaraz si przekonasz!

3)

:00401119        push 00000000				//parametry
:0040111B        push 004021C6				//(ten zwraca 1 jesli wszystko byo OK)
:00401120        push 0000006A				//do
:00401122        push [ebp+08]				//calla
:00401125        Call 004012AD				//to wanie ten call:) (GetDlgItemInt)
:0040112A        cmp dword ptr [004021C6], 00000001	//porownoje [004021C6] z 1
:00401131        jnz 004011D7				//jesli nie jest rwne to skok
:00401137        xor eax, 000007BF			//WANE XORUJE KEY Z 7BFh
:0040113C        mov dword ptr [004021BA], eax		//wrzuca wynik do [004021BA]

Jak pniej si przekonasz ten kawaek kodu jest bardzo istotny dla dalszego amania. Musisz zapamita, e w 004021BA jest zxorowany key. Idziemy dalej, a dalej nastpny GetWindowTextA

4) Ten moment jest najwaniejszy. Zostawiem te te cyferki w drugiej kolumnie, bo pomog one przy patchowaniu.

:0040114E E86C010000              Call 004012BF		//GetWindowTextA
:00401153 B9CA214000              mov ecx, 004021CA	//name do ecx
:00401158 33C0                    xor eax, eax		//zerowanie eax
:0040115A 33DB                    xor ebx, ebx		//zerowanie ebx
:0040115C 8A19                  |-mov bl, byte ptr [ecx]//kolejny znak name do bl
:0040115E 80FB00                | cmp bl, 00		//sprawdza czy w bl jest pusto
:00401161 7405                  | jz 00401168		//jesli tak to skok
:00401163 03C3                  | add eax, ebx		//WANE DODAJE WARTO ZNAKU BL DO EAX
:00401165 41                    | inc ecx		//nastpny znak w ecx
:00401166 EBF4                  |-jmp 0040115C		//jump do gry
:00401168 35D0070000              xor eax, 000007D0	//WANE XORUJE EAX Z 7D0
:0040116D 3905BA214000            cmp dword ptr [004021BA], eax//PORWNUJE [004021BA] Z EAX
:00401173 7562                    jnz 004011D7			//jeli nie rwne to skok

Jeli jeszcze nie wiesz co tu si dzieje juz Ci mwi. Wikszo jest wytumaczona na grze, ale tu wytumacz dokadniej:) Mamy tu ptelk, ale co ona robi?? Dodaje wszystki wartoci znakw z name do siebie i wynik XORuje z 7D0h. Pniej z czym porwnuje... Pamitasz jak wczeniej o tym mwiem. Program porwnuje key zxorowany z 7BFh z eax i jeli s rwne to program idzie dalej i wywietla messaga z informacj o dobrym kodzie.

Najpierw omwi najprostrz metod zamania tego CM, czyli patcha. Teoretycznie autor napisa "!No patch allowed", ale w celach edukacyjnych mona to zrobi:) Wystarczy ostatni skok warunkowy (7562 jnz 004011D7) zamieni na 9090 NOP NOP i z gowy. Messag bdzie wywietlany bez rnicy jaki key wprowadzimy.
Teraz opisz jak zdoby serial do Twojego name. Jak wiesz CM xoruje key z 7BFh i prwnuje go z sum wartoci liter z name zxorowan z 7D0h. Wic znalezienie keya jest bardzo proste. Wystarczy zxorowa sum wartoci liter z name z 7BFh i ju mamy serial. Przykad:

LITERY:      W   o   j   2  s
KODY ASCII:  87  111 106 50 115
87+111+106+50+115=469
7D0h na deca = 2000
469 XOR 2000 = 1541
7BFh na deca = 1983 (czyby rok urodzenia autora CM???)
1541 XOR 1983 = 442 (KEY DLA NAME Woj2s)

Teraz napisanie keygena to aden problem. Jednak wrazie czego do tutoriala doczam KG razem z kodem.

Pozdrawiam wszystkich czytajcych,
Woj2

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

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


(klasyczny przykad przerostu formy nad treci:))

Jube (4 crackme)
Iczelion (4 gr8 asm tutorial)

&

Ufcio, ReWolf, Butthead, Smola

&

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


