                     _______                   ______
                     |   _   |-----.--.--.-----.   _  \
                     |   1___|  -__|  |  |  -__|.  |   |
                     |____   |_____|\___/|_____|.  |   |
                     |:  1   |                 |:  |   |
                     |::.. . | POLISH CRACKERS |::.|   |
                     `---===='__             __`-==_---'
                        |       |-----.---.-.   Y   |
                        |.|   | |  -__|  _  |.      |
                        `-|.  |-'_____|___._|. \_/  |
                          |:  |             |:  |   |
                          |::.|             |::.|:. |
                          `---'             `--- ---'

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=i n f o r m a t i o n s-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

   prog name   : Crackme 2.0 by Jube - skill very easy :(
   Date        : 03.06.2000
   Writen by   : plastek
   What        : tut ;)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-t u t o r i al-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Hmmm znowu sie spotykamy :). Dziwne ze jeszcze chce sie komus czytac to g....
Dobra, dobra zaczynamy.
Udajemy sie na strone www.crackmes.prv.pl i sciagamy Crackme 2.0 by Jube (jesli nie ma go przy tym tucie). Zaczynamy od standardowych ogledzin... hmmm plik ma nazwe cmjube2.zip. Co to oznacza??? no tak trzeba odpalic WinZdycha i zdekompresowac pliki zawarte w archiwum.
Ok sa dwa pliki jeden crk_me2.exe - zapewne exek crackme'ka i drugi readme.7tm. Zaczynamy od tego drugiego gdyz zawsze mozna tam znalec ciekawe info. Klikamy dwa razy na tym pliku... i kewl :) pojawia sie notepad. Czytamy zawartosc pliku tratatratatata... jakies smieci.. srutututururuaa ... ale, ale co to??? no tak to moze byc ciekawe... Cytuje:
"This time crackme isn't packed with UPX so it's easier
for you. Also there is no anti-debug protection."
no tak crackme nie jest spakowane UPX'em (a czym jest???) i nie ma anti-si trick, szkoda tak fajnie sie zapowiadalo :(.
Po doglebnej analizie txt i dowiedzeniu sie ze Jube jest czlonkiem znanej grupy 7team ;) przechodzimy do odpalenia exeka. Odpalamy i ........nic :(, zadnego pola do wpisania heselka - czyzby blad autora??? nie zostawil miejsca na wpisanie hasla???... dziwne...
jest jeszcze inna mozliwosc moze zabezpieczeniem jest tajne haslo wpisywane nie wiadomo gdzie, albo kombinacja klawiszy... albo, no tak! keyfile czyli pliczek z haselkiem!!!
Probujemy standardowa zagrywke w tym przypadku bpx createfilea i odpalamy crackme'ka,
lapie sie na createfilea i mamy cos takiego
KERNEL32!CreateFileA
015F:BFF77ADF  PUSH      EDI
015F:BFF77AE0  PUSH      00000127
015F:BFF77AE5  SUB       EDX,EDX
015F:BFF77AE7  PUSH      BFFA191F
015F:BFF77AEC  PUSH      DWORD PTR FS:[EDX]
015F:BFF77AEF  MOV       FS:[EDX],ESP
015F:BFF77AF2  MOV       EDI,[ESP+14]<-kiedy przejdziemy przez ta linie dajemy d edi i pokazuje nam sie nazwa otwieranego pliku
za pierwszym razem bedzie to nazwa naszego crackme ktore tez musi byc jakos uruchomione :)
ale za drugim razem jak nam sie zlapie na bpx i damy d edi to zobaczymy w okienku z danymi (aha wlasnie zapomnialem powiedziec ze korzystamy z debuggerka np.  softice lub trw)
pojawilo nam sie crk2.a i jest to nazwa naszego keyfile'a, odpalamy notepada i tworzymy plik o tej nazwie (z rozszerzeniem "a" nie "txt") i wpisujemy w nim cos np. pojeb...
odpalamy crackme'ka jeszcze raz wychodzimy z createfilea i ogladamy kod
015F:00401158  CALL      KERNEL32!CreateFileA	;tu jest wlasnie nasze create....
015F:0040115D  CMP       EAX,-01		;a tu sie znajdziemy po wyjsciu z funkcji (f12)
015F:00401160  JZ        0040126B		;sprawdza czy dany plik jest, jesli nie to bye :)

015F:00401166  MOV       [004020ED],EAX		
015F:0040116B  PUSH      00
015F:0040116D  PUSH      DWORD PTR [004020ED]
015F:00401173  CALL      KERNEL32!GetFileSize   ;pobranie rozmiaru pliku
015F:00401178  CMP       EAX,09			;porownanie z 9
015F:0040117B  JB        00401260		;jesli mniej niz 9 to bye :)
015F:00401181  MOV       [004020F1],EAX		;zachowanie na pozniej rozmiaru pliku

015F:00401186  PUSH      EAX
015F:00401187  PUSH      00
015F:00401189  CALL      KERNEL32!GlobalAlloc	;alokacja pamieci
015F:0040118E  CMP       EAX,00
015F:00401191  JZ        00401260

015F:00401197  MOV       [004020F5],EAX
015F:0040119C  PUSH      00
015F:0040119E  PUSH      004020FD
015F:004011A3  PUSH      DWORD PTR [004020F1]
015F:004011A9  PUSH      EAX
015F:004011AA  PUSH      DWORD PTR [004020ED]
015F:004011B0  CALL      KERNEL32!ReadFile	;odczyt pliku
015F:004011B5  CMP       EAX,00			;jesli cos nie tak to bye :)
015F:004011B8  JZ        00401260

015F:004011BE  MOV       EBX,[004020FD]		;tu cos bardzo dziwnego hehe
015F:004011C4  CMP       EBX,[004020F1]		;porownanie rozmiaru pliku z rozmiarem tego
015F:004011CA  JNZ       00401255		;samego pliku :)

015F:004011D0  MOV       EBX,[004020F5]		;ebx=wskaznik do pamieci gdzie jest obraz pliku
015F:004011D6  MOV       EAX,[EBX]		;do eax trafiaja 4 pierwsze znaki hasla z pliku
015F:004011D8  XOR       EAX,12345678		;tu operacje
015F:004011DD  SUB       EAX,77562332		;i tu tez
015F:004011E2  JNZ       00401255		;jesli nie rowne 0 to bye :)

mamy miec 0 zeby bylo ok, wiec patrzymy jaka liczba minus 77562332 daje nam 0 - oczywiscie 77562332 teraz w SI wpisujemy ?77562332^12345678=6562754A='ebuJ', fajnie, ale co to jest ten 'ebuJ'??? - po odwroceniu kolejnosci znakow widzimy 'Jube' ;) a wynika to ze zboczonego sposobu zapisu w pamieci w odwrotnej kolejnosci. Huraa mamy 4 pierwsze znaki heselka i umieszczamy je w naszym pliku.
015F:004011E4  ADD       EBX,04			;ebx=wskaznik na 4 kolejne znaki heselka
015F:004011E7  MOV       EAX,[EBX]		;do eax te 4 kolejne znaki
015F:004011E9  MOV       [00402101],EAX		;zapamietanie w pamieci
015F:004011EE  ADD       EBX,04			;ebx=wskaznik na 4 kolejne znaki :)
015F:004011F1  MOV       EAX,[004020F1]		;tu dlugosc naszego pliku
015F:004011F6  SUB       EAX,08			;minus 8 czyli dlugosc plku poczawszy od 9 znaku
015F:004011F9  MOV       ECX,EAX		
015F:004011FB  XOR       EDX,EDX		;zerowanie edx

015F:004011FD  MOVZX     EAX,BYTE PTR [EBX]     ;
015F:00401200  ADD       EDX,EAX		;
015F:00401202  INC       EBX			;ta procka odpowiada za obliczenie sumy hex
015F:00401203  DEC       ECX			;znakow naszego hasla poczawszy od 9 znaku
015F:00401204  JNZ       004011FD		;	

015F:00401206  XOR       EDX,87654321		;tu xoruje sume hex znakow z liczba 87654321
015F:0040120C  XOR       EDX,[00402101]		;a tu xoruje wynik z liczba z pamieci
015F:00401212  JNZ       00401255		;bye bye :) jesli nie 0 
pamietacie co jest pod 402101 ???
jesli nie to cofnijcie sie pare wierszy i zobaczycie :)
wiecie juz???
dalej nie :(
no to przypomne:
015F:004011E4  ADD       EBX,04			;ebx=wskaznik na 4 kolejne znaki heselka
015F:004011E7  MOV       EAX,[EBX]		;do eax te 4 kolejne znaki
015F:004011E9  MOV       [00402101],EAX		;zapamietanie w pamieci
czyli pod 402101 sa 5,6,7 i 8 znak z naszego heselka
Na razie zostawimy to xorowanie w spokoju ;), zmieniamy flage i idziemy dalej 

015F:00401214  MOV       EAX,00402105		;
015F:00401219  MOV       EDX,00402121		;
015F:0040121E  MOV       BL,[EAX]		;
015F:00401220  CMP       BL,00			;tu nastepuje przepisanie stringu "Registered to"
015F:00401223  JZ        0040122B		;w inne miejsce ;)
015F:00401225  MOV       [EDX],BL		;
015F:00401227  INC       EDX			;
015F:00401228  INC       EAX			;
015F:00401229  JMP       0040121E		;

015F:0040122B  MOV       EBX,[004020F5]		;ebx=wskaznik na nasz plik w pamieci
015F:00401231  ADD       EBX,08			;ustawiamy sie na 9 znaku heselka
015F:00401234  MOV       ECX,[004020F1]		;pobranie rozmiaru pliku
015F:0040123A  SUB       ECX,08			;minus 8 (wiadomo dlaczego)

015F:0040123D  MOV       AL,[EBX]		
015F:0040123F  XOR       AL,23			
015F:00401241  MOV       [EDX],AL		
015F:00401243  INC       EDX			
015F:00401244  INC       EBX			
015F:00401245  DEC       ECX			
015F:00401246  JNZ       0040123D		;a tu juz skok do wyswietlenia
poszczegolne znaki sa xorowane z 23 i w tej postaci wyswietlone
Ogolnie zawartosc keyfile'a przedstawia sie tak
JubexxxxYYYYYY....
gdzie Jube to Jube :)
xxxx to cos w rodzaju checksumy hasla
YYYY.... to nasz nick zxorowany z 23
checksume liczymy w nastepujacy sposob: albo dodajemy hex poszczegolnych znakow hasla poczawszy od 9-ego, nastepnie xorujemy wynik z 87654321 i otrzymana liczbe wpisujemy do keyfile'a (moze byc konieczne uzycie hexeditora dlatego ze znaki moga wykraczac poza normy ;)), albo korzystamy z procki z crackme'sia czyli:
015F:004011FD  MOVZX     EAX,BYTE PTR [EBX]     
015F:00401200  ADD       EDX,EAX		
015F:00401202  INC       EBX			
015F:00401203  DEC       ECX			
015F:00401204  JNZ       004011FD		
015F:00401206  XOR       EDX,87654321		;po tym xorowaniu edx bedzie szukana przez nas checksuma
OK sprobujemy to zrobic dla mojego nicka "plastek", najpierw xorujemy kazdy znak z liczba 23 czyli
?'plas'^23232323=PBOS i na odwrot SOBP (stawiajac znaki apostrofu mozna bezposrednio operowac na stringach do 4 znakow dlugosc)
?'tel'^232323=HFW i na odwrot WFH
czyli mozemy juz zapisac czesc hasla
JubexxxxSOBPWFH i teraz przechodzimy do liczenia checksumy:
?'S'+'O'+'B'+'P'+'W'+'F'+'H'=219h
?219^87654321=87654138h ale zapiszemy to znowu na odwrot i mamy 38416587h. Teraz zapisujemy to do pliku np. piszemy Jube2323SOBPWFH a te cztery znaki zamieniamy hexeditem na 38 41 65 87.
Po odpaleniu crackme'ka z tak wygenerowanym plikiem otrzymujemy nagrode 'Registered to plastek' :).
BTW. to juz koniec :))


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=members of SeveN TeaM-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

  Prezident:      MaxiBogas...........................founder/coder/cracker
  VizePrezident:  Plastek.............................founder/coder/cracker
  Seniors:
                  pawlos............................................cracker
                  Mr. Ketchup.......................................cracker 
                  Rusty.............................................cracker
  Division:
                  Jube........................................cracker/coder
                  {ATOM}....................................decoder/cracker
                  jamman............................................cracker
  Trial:
                  Pokropek..........................................cracker
                  lukasw............................................cracker
                  Dumboo............................................cracker
                  zoomek.....................................writer/cracker
  WebPage:
                  LIAR..............................webmaster/graphic/coder
                  _2000_.......................................server_admin

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-o t h e r s-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

  Greets to : Cys, mNICH, smola, Mietor, _r00t_, Liquid^, AraKuS
     groups : CrackPL, AAOCG, CookieCrk

  My e-mail: marbardi@alpha.net.pl
             ~~~~~~~~~~~~~~~~~~~~~
  SeveN TeaM - Official WebPage:  http://www.7team.z.pl
                                  ~~~~~~~~~~~~~~~~~~~~~
-=-=-=E-O-T=-=-=-=E-O-T=-=-=-=E-O-T=-=-=-=E-O-T=-=-=-=E-O-T=-=-=-=E-O-T=-=-=-=E-O-T=-=-=-=E-O-T=-