			 > AAOCG <> AAOCG <> AAOCG <> AAOCG <> AAOCG < 

CrAcKinG TutoRiaL bY ChendLer

stuff:

Prog: Crackme v3.0 by Cruehead /MiB
protect: keyfile
skill: Newbies

tools:

- SoftIce
- FileMonitor
- Kartka papieru (duza) i olowek.
- Mozg.
- Chwila czasu

Topic: Jak zlamac Crackme v3.0 by Cruehead /MiB
__________________________________________________

Wstep:

Witam znowu. W tym tutorialu zajmiemy sie programikiem dla Newbies.
Ja jak bym byl autorem tego crackme to nie dal bym poziom Newbies tylko easy.
Chodzi w nim oto aby znalezc odpowiedni plik do niego z odpowiednimi danymi.
__________________________________________________

Zalecenia:

1 - Jezeli nie jestes NewBies to crackuj. Jezeli ni scrackujesz przeczytaj ten
    tutorial.
2 - Wazne gdy to czytasz abys mial swiezy umysl. Przed czytaniem idz na spacer zagraj
    w szachy lub zrob przerwe godzinna.
__________________________________________________

Zaczynamy. Uruchamiamy File Monitora i uruchamiamy crackme. Zamykamy crackme. Po co to
robimy? No po to aby sie dowiedziec do jakich plikow nasze crackme sie odwolywalo.

Ok. Widzimy ze nie znalazl pliku crackme3.key. Swietnie wiemy jaki plik potrzebuje crackme
  aby sie zarejestrowalo. Mozna tez w inny sposob zakladajc pulapke bpx createfileA. My juz
 mam wiec tym drugim sposobem nie bedziemy sie poslugiwac. Tworzymy plik crackme3.key
i idziemy dalej. Teraz czas na uzupelnienie ja uzupelnilem tak.

Chendler

He he to wiadomo. Dobra teraz w SoftIce i bpx readfile. Wyjdz i uruchom crackme. Potem
nacisnij F11 i kilkanascie F12 :)), az na belce bedzie CrackMe3. Dobra teraz zobaczysz
taki kod:

:00401066 833DA021400012          cmp  [004021A0], 00000012          (1)
:0040106D 75C8                    jne  00401037
:0040106F 6808204000              push 00402008
:00401074 E898020000              call 00401311
:00401079 8135F920400078563412    xor  [004020F9], 12345678
:00401083 83C404                  add  esp, 00000004
:00401086 6808204000              push 00402008
:0040108B E8AC020000              call 0040133C
:00401090 83C404                  add  esp, 00000004
:00401093 3B05F9204000            cmp  eax, [004020F9]
:00401099 0F94C0                  sete al

(1) - co to jest? aha no dobra teraz wiemy ze dane w pliku crackme3.key
      maja miec 18 znakow. Dlaczego?:
? 12

00000012 0000000018 ...

Dobra wracamy i updatujemy plik. Ja mam tak.

Chendler1234567890

Powtarzamy czynnosc i znowu jestesmy na kodzie:

:0040106F 6808204000              push 00402008
:00401074 E898020000              call 00401311 ;przydatny call F8 him! ------_
:00401079 8135F920400078563412    xor  [004020F9], 12345678                    |
:00401083 83C404                  add  esp, 00000004                           |
:00401086 6808204000              push 00402008                                |
:0040108B E8AC020000              call 0040133C                                |
:00401090 83C404                  add  esp, 00000004                           |
:00401093 3B05F9204000            cmp  eax, [004020F9]                         |
:00401099 0F94C0                  sete al                                      |
            ___________________________________________________________________|
           |
     ------x------
:00401311 33C9                    xor ecx, ecx          (1)
:00401313 33C0                    xor eax, eax          (2)
:00401315 8B742404                mov esi, [esp+04]     (3)
:00401319 B341                    mov bl,  41           (4)
:0040131B 8A06                    mov al,  [esi]        (5)
:0040131D 32C3                    xor al,  bl           (6)
:0040131F 8806                    mov [esi], al         (7)
:00401321 46                      inc esi               (8) 
:00401322 FEC3                    inc bl                (9)
:00401324 0105F9204000            add [004020F9], eax   (10) 
:0040132A 3C00                    cmp al, 00            (11)
:0040132C 7407                    je 00401335           (12)
:0040132E FEC1                    inc cl                (13)
:00401330 80FB4F                  cmp bl, 4F            (14)
:00401333 75E6                    jne 0040131B          (15)
:00401335 890D49214000            mov [00402149], ecx   (16) 
:0040133B C3                      ret

	Co my tu mamy? To ty sobie zobacz a ja przeanalizuje ok?
 Fajnie.
__________________________________________________

(1)  - zerowanie rejestru ecx
(2)  - zerowanie rejestru eax
(3)  - do esi idzie serial. :)))
(4)  - do bl idzie 041h = A
(5)  - do al myka pierwszy bajt seriala
(6)  - xorowanie A z C (C= pierwszy znak seriala)
(7)  - do esi idzie (oj daleko nie zajdzie) wynik po xorowaniu
(8)  - esi jest inkme inret inrektm aaa :)) zwiekszanie o jeden
       czyli nastepny znak seriala. A inkrementowane :))))))
(9)  - inkrementowane. Czyli w bl jest B
(10) - dodaje to co w eax pod adres 004020F9. A co jest? Nie powiem sam zobacz. :)))
(11) - sprawdza czy w al jest jeszcze jakis znak.
(12) - skok to wiemy. :))
(13) - cl zwiekszane o jeden.
(14) - porownaj z O jesli jest O to koniec petli.
(15) - znowy skok.
(16) - pod adre kopiowane jest to co w ecx czyli 0E. Musisz wiedziec co to jest.
__________________________________________________

To jest petla ktora pobiera kolejne znaki i xoruje z A potem B itd.
wynik koncowy jest zawary w 004020F9.

Przechodzimy przez ret'a i wracamy do kodu:
__________________________________________________

:00401079 8135F920400078563412    xor  [004020F9], 12345678
:00401083 83C404                  add  esp, 00000004        
:00401086 6808204000              push 00402008
:0040108B E8AC020000              call 0040133C ;F8 him ----------------
:00401090 83C404                  add  esp, 00000004                    |
:00401093 3B05F9204000            cmp  eax, [004020F9]                  |
:00401099 0F94C0                  sete al                               |
          ______________________________________________________________| 
         |
  -------x-------

:0040133C 8B742404                mov esi, [esp+04]
:00401340 83C60E                  add esi, 0000000E
:00401343 8B06                    mov eax, [esi]     (1)
:00401345 C3                      ret

Juz tlumacze. Do esi jest kopiowany tzw. wskaznik naszego seriala. Potem dodawane
do niego jest 0E. To zgadnij na  ktory znak bedzie wskazywac esi. Jezeli na 15 to
dobrze. Dlaczego? Bo przed operacja esi wskazywalo na 1. 1+14=15 :))))))))

Dobra jak wiemy 14 znakow zosalo zxorowane. Reszta nie naruszona. 

(1) - reszta znakow nie z xorowanych do eax. :))

Wychodzimy i widzimy:

:00401090 83C404                  add  esp, 00000004 ;bez znaczenia. szkoda
:00401093 3B05F9204000            cmp  eax, [004020F9]  (1)
:00401099 0F94C0                  sete al               (2)

(1) - Porownaie eax z tym co jst w 004020F9. W eax sa cztery ostatnie znaki 
a w 004020F9 suma zxorowanych wszystkich znakow. Jesli rowne to jest good.

Dobra to co zrobic aby go wreszcie zlamac. Zastap to co w eax suma
zxorowanych znakow i bedzie good. Jak nie wierzysz to sprawdzimy razem :)))))

d 004020F9

i widzisz w oknie danych cost takiego 8B 55 34 12 (ja to widze i to jest hex)
zapisz na kartke. Wyjdz z SoftIce. Wez HexEdytor i jako cztery znaki wpisz

8B 55 34 12 

tzn. ja chyba ze wpisales te dane co ja. Uruchom crackme i yes:

cracked by: !..xxxxxxx!<= jakies znaczki. Widzisz dziala.
Tylko cos nie tak wyglada. Ja chcialbym aby tam pisalo:

Cracked by: Chendler^AAOCG

A jak ja cos chce to to zrobie :))))))))))))

Dobra to robimy tak aby imie bylo prawidlowe. Pamietasz (moze i nie) to petle xorowania.
Pierwszy znak xorowany z A drugi z B. To trzeba tak przerobic dane aby wchodzilo wszystko.

Oto mini tableka:

+-------------------------------------------------------+
| Znak (hex) | Wartosc do xorowania | Wartosc otrzymana |      
|-------------------------------------------------------+
|1. C = 43h  |     A = 41h          |       02h         |  
|-------------------------------------------------------|
|2. h = 68h  |     B = 42h          |       2Ah         |
|____________|______________________|___________________|

Wiem ze nie jest ona piekna ale kumasz jak zrobic imie?. Nie. Uff
 To jeszcze raz bierzesz wartosci hexadecymalne kolejnych znakow i xorujesz z A itd. az 
do wyczerpania 14 znakow.

41h ; 42h ; 43h; 44h; 45h; 46h; 47h; 48h; 49h; 4Ah; itd.

      To koniec w tym tutorze powinien byc moj plik crackme3.key. 
  Do zobaczenia w nastepnym. 
						Chendler /AAOCG
chendler19@poczta.onet.pl

__________________________________________________
