************************************************************************* ************************************************************************* *************Witaj w tutorze #2 by TepeX !!!***************************** ************************************************************************* ************************************************************************* Bytom woj.Slaskie 21.02.2000 Witam!!! Trafilea/as wlasnie do trzeciej czesci mojego tutorial'a ( jak ten czas leci : ). Dzisiaj zajmiemy sie crackme #3 grupy Phrozen Crow. I znowu bedziemy zmudnie analizowac kazda linijke kodu no, ale czego nie robi sie dla crack'u. A wied do dziela!!! Co potrzebujesz: -SoftIca ver. 3< -Wdasm -RegMonitor ( niekoniecznie... ) Poczatek WOJNY: Otworzmy wiec crackme, po nagscreen'ie zobaczymy okienko z informacje "Not correct" ( czy jakos tak ). Popatrzym na nazwe crackme - The file chellenge. Co to znaczy??? POTYCZKA Z PLIKAMI. Huh fajna nazwa, a wiec co zrobimy??? Tak, zalozmy pulapke na creatfileA. I tu mala pomoc przedstawiam wam macro do softica. Pokazuje one wywolywany plik przez ta funkcje. A oto one: bpx createfilea do "d esp->4; p ret;" Zaloz wiec taka pulapke. I co??? Nie dziala!!! Autorzy pokusili sie o drobne urozmaicenie nam zabawy i zmusili nas do posiadaniu kilku rzeczy przed wywolaniem pliku. Jakich??? Zobacz w disasmeblerowany program ( pod Wdasm'em ). Widac tam wywolanie funkjci rejestru. A po co??? Zobacz wlacz regmonitor i nacisnij przycisk RE-TEST. Pokaze ci sie w RegMonitor'ze taka linijka kodu: Crackme3 OpenKey HKLM\SOFTWARE\Netscape\Netscape Navigator\Users NOTFOUND 1 2 3 4 Co ona znaczy??? Zobacz na czesc 1 - nazwa wlasciciela wywolania danej opcji (ale mi sie ladnie napisalo :) ) Teraz czesc 2 - widac tam funkcje API wywolana przez program Czesc 3 - utwierany klucz, wartosc itp. I ostatnia czesc - wynik operacji I co musimy zrobib??? Masz RACJE! Utworzmy w rejestrze taki klucz! Cyba wiesz jak to zrobic??? UWAGA!!! na male, wielkie litery, spacje itp. Skrot HKLM oznacza HKEY_LOCAL_MACHINE! Ponowmy sledzenie crackem RegMonitorem ( wyczysc pierw log'i abys nie mial bajzlu... ) I co teraz widac Crackme3 OpenKey HKLM\SOFTWARE\Netscape\Netscape Navigator\Users hKey: 0xC11BDDFC SUCCESS Crackme3 QueryValueEx HKLM\SOFTWARE\Netscape\Netscape Navigator\Users\CurrentUser NOTFOUND Przeanalizujmy to... pierwszy klucz otrwal sie ladnie, ale juz kolejny zle... Wiec jeszcze raz! Tym razem utworz jednak nie klucz, ale wartosc ciagu ( daj w nim jakas wartosc np. swoje imie... )!!! I co tym razem widac w RegMonitorze??? Jesli zrobiles wszystko dobrze zobaczysz... Crackme3 OpenKey HKLM\SOFTWARE\Netscape\Netscape Navigator\Users hKey: 0xC11BDDFC SUCCESS Crackme3 QueryValueEx HKLM\SOFTWARE\Netscape\Netscape Navigator\Users\CurrentUser 0 SUCCESS Crackme3 CloseKey HKLM\SOFTWARE\Netscape\Netscape Navigator\Users SUCCESS Crackme3 OpenKey HKLM\SOFTWARE\Netscape\Netscape Navigator\Users\darek NOTFOUND Widac, ze program pomyslnie czyni wszystko co powinien i potem prubuje otworzyc klucz HKLM\SOFTWARE\Netscape\Netscape Navigator\Users\twoja_wartosc. Utworz wiec taki klucz. I co??? Crackme3 OpenKey HKLM\SOFTWARE\Netscape\Netscape Navigator\Users hKey: 0xC11BDDFC SUCCESS Crackme3 QueryValueEx HKLM\SOFTWARE\Netscape\Netscape Navigator\Users\CurrentUser 0 SUCCESS Crackme3 CloseKey HKLM\SOFTWARE\Netscape\Netscape Navigator\Users SUCCESS Crackme3 OpenKey HKLM\SOFTWARE\Netscape\Netscape Navigator\Users\darek hKey: 0xC1153B40 SUCCESS Crackme3 QueryValueEx HKLM\SOFTWARE\Netscape\Netscape Navigator\Users\darek\DirRoot NOTFOUND Huh! Ile tego... No, ale coz chycba nie musze mowic co musisz zrobic??? No, ale powiem! Utworz wartosc ciagu w danym kluczu, o nazwie DirRoot i wklep tam jakas wartosc... Ja np. wpisalem ds. Crackme3 OpenKey HKLM\SOFTWARE\Netscape\Netscape Navigator\Users hKey: 0xC11BDDFC SUCCESS Crackme3 QueryValueEx HKLM\SOFTWARE\Netscape\Netscape Navigator\Users\CurrentUser 0 SUCCESS Crackme3 CloseKey HKLM\SOFTWARE\Netscape\Netscape Navigator\Users SUCCESS Crackme3 QueryValueEx HKLM\SOFTWARE\Netscape\Netscape Navigator\Users\darek\DirRoot 63 3A 0 SUCCESS Crackme3 CloseKey HKLM\SOFTWARE\Netscape\Netscape Navigator\Users\darek SUCCESS Widzisz tutaj jak ladnie program wszystko oblecial i pobral wartosc jaka wpisales w ciagu DirRoot. No dobrze wszytsko gra to zalozmy pulapke na funkcje odczytujaca plik. Jaka to funkcja??? Tak, CreateFileA. A wiel SoftIce i pulapka ( bpx CreateFileA). Uwaga!!! Mam dla was male makro, ktore ulatwi wam sledenie tej funkcji. Pokazuje one jaki plik jest otwierany i jednoczesnie przechodzi do miejsca wywolania funkcji ( nie trzeba klepac w F11... ). A oto one: bpx CreateFilea do "d esp->4; p ret;". Zaluz wiec pulapke i nacisnij Re-Test, co widac??? SoftIce przejal kontrole, w oknie data widac otwierany plik. Ale co to widac tam ds\bookmark.htm Co to jest ds??? To wartosc ( w moim przypadku ) ktora byla wklepana do rejestru w wartosci DirRoot!!! Zmodyfikujmy ja wiec tak, aby wskazywala na jakis normalny dysk. A wiec RegEdit i wpisz np. c: Jeszcze raz Re-Test i widac SoftIce pokazuje ladnie: C:\bookmark.htm No to zajmijmy sie analiza... Ladujemy w takim miejscu: 0137:0040120C PUSH 00000080 0137:00401211 PUSH 03 0137:00401213 PUSH 00 0137:00401215 PUSH 03 0137:00401217 PUSH C0000000 0137:0040121C PUSH 004021BE ; na stos nazwa pliku 0137:00401221 CALL KERNEL32!CreateFileA ; tutaj ladujemy 0137:00401226 CMP EAX,-01 ; czy plik jest??? 0137:00401229 JZ 00401269 ; skok god/bad 0137:0040122B NOP 0137:0040122C NOP 0137:0040122D NOP 0137:0040122E NOP 0137:0040122F MOV [00402220],EAX 0137:00401234 PUSH 00402224 0137:00401239 PUSH DWORD PTR [00402220] 0137:0040123F CALL KERNEL32!GetFileSize ; pobranie wielkosic pliku 0137:00401244 MOV EBX,EAX ; do ebx wielkosc 0137:00401246 SHR EAX,10 ; shr wielkosc 0137:00401249 MOV DX,AX 0137:0040124C MOV AX,BX 0137:0040124F CALL 0040107A ; wywolanie funkcji 0137:00401254 CMP EAX,01 ; czy eax==01 0137:00401257 JNZ 00401269 ; jesli nie to skocz! 0137:00401259 NOP 0137:0040125A NOP 0137:0040125B NOP 0137:0040125C NOP 0137:0040125D MOV EAX,00000001 0137:00401262 POP EBP 0137:00401263 POP EDI 0137:00401264 POP ESI 0137:00401265 POP EDX 0137:00401266 POP ECX 0137:00401267 POP EBX 0137:00401268 RET 0137:00401269 mov eax,00000000 0137:0040126e pop ebp 0137:0040126f pop edi 0137:00401270 pop esi 0137:00401271 pop edx 0137:00401272 pop ecx 0137:00401273 pop ebx 0137:00401274 ret No dobrze zostawmy to na razie ( na razie ) i zobaczmy co musi sie stac aby wyswietlilo sie w okienku Correct:)! Jak sluznie (chyba:( ) zauwazyles, aby pojawilo sie w okienku correct nie moze wykonac sie skok 00401257! Popatrz, gdy skok sie wykona do eax pojdzie 0 (mov eax,00000000), natomias gdy sie nie wykona pojdzie sobie 01 (mov eax,00000001). No dobrze, ale co zrobic by skok sie nie wykonal... co robi jnz - skocz gdy nie rowne, co robi cmp - porownuje. Wnioski??? eax musi byc rowne 01. A jak to zrobic??? Popatrz wyzej, widac tam brzydki call, wejdzmy tam... (no nie wiesz jak??? klawisz F8 - w momencie gdy ta linia jest podswietlona!) Co widac?? O cos takiego; 0137:0040107c mov [0040201a],dx 0137:00401083 mov [0040201c],dx 0137:0040108a xor ax,ax 0137:0040108d mov [00402022],al 0137:00401092 cmp word ptr [0040201a],00 0137:0040109a jz 004010dc 0137:0040109c nop 0137:0040109d nop 0137:0040109e nop 0137:0040109f nop 0137:004010a0 mov ecx,00000010 0137:004010a5 push ecx 0137:004010a6 push 00 0137:004010a8 push 00402018 0137:004010ad push 00001000 0137:004010b2 push 00402226 0137:004010b7 push dword ptr [00402220] 0137:004010bd call KERNEL32!ReadFile ; odczyt pliku 0137:004010c2 call 00401000 0137:004010c7 pop ecx 0137:004010c8 cmp al,01 ; czy rowne 01 ??? 0137:004010ca jz 00401108 ; skok god/bad 0137:004010cc nop 0137:004010cd nop 0137:004010ce nop 0137:004010cf nop 0137:004010d0 dec ecx 0137:004010d1 jnz 004010a5 0137:004010d3 dec word ptr [0040201c] 0137:004010da jnz 004010a0 0137:004010dc pop cx 0137:004010de and ecx,0000ffff 0137:004010e4 push 00 0137:004010e6 push 00402018 0137:004010eb push ecx 0137:004010ec push 00402226 0137:004010f1 push dword ptr [00402220] 0137:004010f7 call KERNEL32!ReadFile 0137:004010fc call 00401000 0137:00401101 cmp al,01 0137:00401103 jmp 0040110a 0137:00401105 nop 0137:00401106 nop 0137:00401107 nop 0137:00401108 pop cx 0137:0040110a push dword ptr [00402220] 0137:00401110 call KERNEL32!CloseHandle 0137:00401115 xor eax,eax 0137:00401117 mov al,[00402022] 0137:0040111c ret Przejdzmy sie troche po kodzie (klawisz F10), az do linii 004010f7. Widac tam wywolanie funkcji odczytujacej plik. Po co??? zobaczmy wejdzmy w tego call'a (klawisz F8, gdy bedziesz na tej linii). Co widac??? 0137:00401000 mov dx,[0040201a] 0137:00401007 mov ax,[0040201c] 0137:0040100d sub dx,ax 0137:00401010 mov [00402020],dx 0137:00401017 xor bx,bx 0137:0040101a mov esi,[00402023] 0137:00401020 lodsb 0137:00401021 mov bl,al 0137:00401023 mov ecx,[00402018] 0137:00401029 mov edi,00402226 0137:0040102e lodsb 0137:0040102f repnz scasb 0137:00401031 cmp ecx,00 ; czy rowne 00 0137:00401034 jnz 00401040 ; nie to skocz 0137:00401036 nop 0137:00401037 nop 0137:00401038 nop 0137:00401039 nop 0137:0040103a mov al,[00402022] 0137:0040103f ret 0137:00401040 push eax 0137:00401041 push edi 0137:00401042 push ecx 0137:00401043 mov cx,bx 0137:00401046 dec ecx 0137:00401047 lodsb Widac tutaj kilak glupich rzeczy, i jedna z wiekszych pomylek grupy PC, przy tworzeniu tego crackme. Widac tutaj jak na dloni haslo - gdzie popatrzmy. Co robi instrukcja repnz scasb - porownuje dwa teksty, z rejestrow edi i esi. Wied dojdzmy do tej linii i zobaczmy co siedzi pod danymi rejestrami. Co jest w EDI (instrukcja d edi) - wow!!! zawartosc naszego pliku, natomiast co jest w ESI - jakies glupoty: 013F:00402002 74 74 70 3A 2F 2F 70 68-72 6F 7A 65 6E 63 72 65 http://phrozencr 013F:00402012 77 2E 6F 72 67 00 3A 02-00 00 00 00 00 00 00 00 ew.org.:........ 013F:00402022 00 00 20 40 00 0A 0D 0A-0D DA C4 C4 C4 C4 C4 20 .. @........... 013F:00402032 10 20 50 68 72 6F 7A 65-6E 20 43 72 65 77 20 11 . Phrozen Crew . 013F:00402042 20 C4 C4 C4 C4 C4 BF 0A-0D B3 20 42 79 74 65 20 ......... Byte 013F:00402052 48 75 6E 74 65 72 20 62-79 20 6E 4F 50 20 26 20 Hunter by nOP & 013F:00402062 54 48 45 5F 71 20 B3 0A-0D C0 C4 C4 C4 C4 C4 C4 THE_q .......... 013F:00402072 C4 C4 C4 C4 C4 C4 C4 C4-C4 C4 C4 C4 C4 C4 C4 C4 ................ Co to moze znaczyc??? Po co to porownuje??? A tak z ciekawosci sprawdzmy co sie stanie gdy wpiszemy ten ciag do pliku. A wiec wpisujmy: http://phrozencrew.org I co??? Widac correct!!!! Pogratuluj sobie - zlamales kolejne crackme!!! Z tego co widzialem jest jeszcze kilka dobrych plikow, ale juz sie tym nie bawilem. Ale ty tak dla treningu, czemu nie??? Do zobaczenie wkrotce!!! Zapraszam do przeczytania innych (moich:))))) tutoriali i podzieleniem sie uwagami, krytykami itp.... *********TepeX*******************TepeX*******************TepeX*********** *********TepeX*******************TepeX*******************TepeX*********** Ciekawe adresy: www.crackpl.site.pl - polska kultowa juz strona, poprostu THE BEST www.cookiecrk.z.pl - strona grupy CookieCrk. Duzo toolsow, crackme www.ptasiek.x.pl - newsy ze sceny crack www.provider.com.pl/~beanus/ - mirror fravii i Crackstore www.corleone.net/a_s_s_e_m_b_l_y.htm - Art Of Asmebly Language - genialna ksiazka o Asmeblerze (moze kiedys ja przetlumacze) GREATS: mNICH - nauczyl mnie wiele (i na pewno nie tylko mnie ), gbyby nie on dalej bylbym "zwyczajny" +HCU - za to co robia i jak robia CrackPl - za postawe ( fundament ) polskiej sceny crack GustawKit - za to, ze trzyma caly ten burdel ( bez urazy, chodzi o balagan :PPPP ) A takze dla wszystkich cracker'ow na swiecie ( + Rafal Platek ) !!!!!!! zhrbytom@friko.internet.pl***zhrbytom@friko.internet.pl***zhrbytom@friko.internet.pl*** zhrbytom@friko.internet.pl***zhrbytom@friko.internet.pl***zhrbytom@friko.internet.pl***