************************************************************************* ************************************************************************* ****************Witaj w tutorze #6 by TepeX !!!************************** ************************************************************************* ************************************************************************* Bytom woj.Slaskie 10.03.2000 Witaj!!! Dzis kolejne juz crackme, tym razem produkcji niejakiego Cosh. W tym odcinku bedzie troche dziwnie... Zlamiemy jedno crackme na dwa sposoby... Jeden bedzie polegal na uzywciu dobrze znanego nam z poprzednich czesci SoftIce, a drugi na uzyciu disassemblera... Co to jest??? huh... w skrocie mozna powiedziec, ze rozklada program na sekcje, pokazuje caly kod programu, uzywane funkcje, napisy itp... Bardzo pomocna miejscami rzecz... Szczegolnie przy takich upierdliwcach jak np. Nag Screen... Pierwszy bedzie sposob z Wdasm (to jest wlasnie ten disasembler...). UWAGA!!!! (znowu) Mam plytke crackersk'a. 650 mb cracerskich stron, programow itp. Jesli chcesz mail'me. Cena 20zl + wysylka. Lub przyjazd do Bytomia bez wysylki! -------------------------Kontakt ze mna:-------------------------------- zhrbytom@friko.internet.pl Ewentualnie od czasu do czasu siedze na IRC'u (kanal #crackpl i #bytom). ----------------------------------------------------------------------- Zaczynamy!!! Otworzmy to crackme (jest dolaczone do tutora, przynajmniej powinno...). Zobaczymy dwa brzydkie okienka Name i Serial... Wpiszmy jakies dane i nacisnijmy przycisk check... Co komunikat i do domu... Uruchommy wiec WDasm'a, wybierz Disasembler... Open File to Disasemeble... Poczekaj chwile, az sie wszystko wykona (dla duzych kilku-megow plikow wymaga to czasami x godzin czasu na wolnych maszynkach...). Popatrz teraz na okno, ktore masz przed soba... Wyglada ono cos mniej wiecej tak... Teraz pare wyjasniem Disassembly of File: Cracke200.exe Code Offset = 00001000, Code Size = 00001000 Data Offset = 00003000, Data Size = 00001000 Pare bzdetow... rozmiary itp... Czesto nie przydatne... Number of Objects = 0004 (dec), Imagebase = 00400000h Object01: .text RVA: 00001000 Offset: 00001000 Size: 00001000 Flags: 60000020 Object02: .rdata RVA: 00002000 Offset: 00002000 Size: 00001000 Flags: 40000040 Object03: .data RVA: 00003000 Offset: 00003000 Size: 00001000 Flags: C0000040 Object04: .rsrc RVA: 00004000 Offset: 00004000 Size: 00001000 Flags: 40000040 Informacje o sekcjach pliku exe... ilosc, wielkosc, wartosci itp... +++++++++++++++++++ MENU INFORMATION ++++++++++++++++++ There Are No Menu Resources in This Application Tu jest informacja o menu programu (jesli istnieje...). +++++++++++++++++ DIALOG INFORMATION ++++++++++++++++++ Number of Dialogs = 1 (decimal) Name: DialogID_0066, # of Controls=000, Caption:"xb", ClassName:"" Okna komunikacyjne.... Id, tytul, klasa... +++++++++++++++++++ IMPORTED FUNCTIONS ++++++++++++++++++ Number of Imported Modules = 4 (decimal) Import Module 001: MFC42.DLL Import Module 002: MSVCRT.dll Import Module 003: KERNEL32.dll Import Module 004: USER32.dll Nazwy imporotwanych biliotek... +++++++++++++++++++ IMPORT MODULE DETAILS +++++++++++++++ Import Module 001: MFC42.DLL Addr:800009FA hint(09FA) Name: Ordinal:09FA Addr:800009D0 hint(09D0) Name: Ordinal:09D0 Addr:80001663 hint(1663) Name: Ordinal:1663 Addr:80000F52 hint(0F52) Name: Ordinal:0F52 Addr:80001186 hint(1186) Name: Ordinal:1186 Addr:80000441 hint(0441) Name: Ordinal:0441 Addr:8000144F hint(144F) Name: Ordinal:144F Addr:8000095C hint(095C) Name: Ordinal:095C Addr:80000D12 hint(0D12) Name: Ordinal:0D12 Addr:800014B4 hint(14B4) Name: Ordinal:14B4 Addr:800014B6 hint(14B6) Name: Ordinal:14B6 (tu bylo ciecie....) Import Module 002: MSVCRT.dll Addr:000028BC hint(0249) Name: exit Addr:000028C4 hint(008F) Name: _acmdln Addr:000028CE hint(0058) Name: __getmainargs Addr:000028DE hint(010F) Name: _initterm Addr:000028EA hint(0083) Name: __setusermatherr Addr:000028FE hint(009D) Name: _adjust_fdiv Addr:000028AE hint(0048) Name: _XcptFilter Addr:0000290E hint(006A) Name: __p__commode Addr:0000291E hint(006F) Name: __p__fmode Addr:0000292C hint(0081) Name: __set_app_type Addr:0000293E hint(00CA) Name: _except_handler3 Addr:00002952 hint(00B7) Name: _controlfp Addr:000028A6 hint(00D3) Name: _exit Addr:00002882 hint(0055) Name: __dllonexit Addr:0000286E hint(0049) Name: __CxxFrameHandler Addr:00002890 hint(0186) Name: _onexit Addr:00002A1A hint(01AA) Name: _setmbcp Import Module 003: KERNEL32.dll Addr:00002960 hint(0126) Name: GetModuleHandleA Addr:00002974 hint(0150) Name: GetStartupInfoA Import Module 004: USER32.dll Addr:000029BC hint(00F0) Name: GetClientRect Addr:000029CC hint(0146) Name: GetSystemMetrics Addr:000029E0 hint(018C) Name: IsIconic Addr:000029A0 hint(0214) Name: SendMessageA Addr:000029FE hint(00B7) Name: EnableWindow Addr:000029B0 hint(00A9) Name: DrawIcon Addr:000029EC hint(01E0) Name: PostQuitMessage Addr:00002994 hint(019E) Name: LoadIconA A to sa poszczegolne imporotowane biblioteki +++++++++++++++++++ EXPORTED FUNCTIONS ++++++++++++++++++ Number of Exported Functions = 0000 (decimal) Tu sa... jesli sa... nazwy exporotwanych biliotek :). +++++++++++++++++++ ASSEMBLY CODE LISTING ++++++++++++++++++ //********************** Start of Code in Object .text ************** Program Entry Point = 004018A0 (Cracke200.exe File Offset:000038A0) A tu juz wlasciwy program.... :00401000 A1C8204000 mov eax, dword ptr [004020C8] :00401005 C3 ret Wiekszosc z tych informacji moze byc bardzo przydatna... np. jesli nie wiesz na co zlapac program widzisz wszystkie funkcje itp... A do rzeczy... Pomysl... jak mozna by znalezc kawalek kodu, ktory mowi nam o zlym serialu??? Mozna by tak... poszukac w spisie text'u, ktory nam o tym mowi... Jaki to text??? "One of the Details you entered ". No dobra, ale jak to zrobic??? WDasm wychodzi nam na przeciw i udostepnia nam taka funkcje. Poszukaj dobrze... widzisz??? nie to zle :(((( oto ona wejdz w menu Refs-> String Data Refenrences... Wyswietli ci sie spis komunikatow uzywanych przez program (komunikatow znajdujacych sie w pliku exe... czesc moze byc ukurta gdzie indziej...). Widac w tym przypadku takie: "ERROR" "One of the Details you entered " "Well done," "YOU DID IT" Wiec zrobmy tak... kilknij dwa razy na komunikat drugi... WDasm przeniesie cie do miejsca gdzie to badziewie jest uzywane... Znajdujesz sie w linii :0040153D... * Referenced by a (U)nconditional or (C)onditional Jump at Addresses: |:004014E4(C), :004014F3(C), :00401516(C), :0040151C(C), :00401522(C) |:00401528(C), :0040152E(C) | :00401536 6A00 push 00000000 * Possible StringData Ref from Data Obj ->"ERROR" | :00401538 6864304000 push 00403064 * Possible StringData Ref from Data Obj ->"One of the Details you entered " ->"was wrong" | :0040153D 6838304000 push 00403038 :00401542 8BCE mov ecx, esi * Reference To: MFC42.Ordinal:1080, Ord:1080h | :00401544 E8F5020000 Call 0040183E :00401549 6A00 push 00000000 :0040154B FFD3 call ebx * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00401534(C) | :0040154D 8D8EE0000000 lea ecx, dword ptr [esi+000000E0] :00401553 8D542414 lea edx, dword ptr [esp+14] :00401557 51 push ecx Popatrz wyzej... jak mozna by uniknac tego komunikatu??? WDasm jest taki mily i pokazuje nam jakie skoki sa... i gdzie skacza... Poszukaj jakiegos skoku ponizej tego komunikatu... jest??? Oto on... * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00401534(C) | :0040154D 8D8EE0000000 lea ecx, dword ptr [esi+000000E0] Popatrz teraz skad ten skok sie wykonuje??? Z linii 00401534 zajrzyj tam... Co widzisz??? Jakies porownanie... * Reference To: MFC42.Ordinal:0F22, Ord:0F22h | :0040150C E833030000 Call 00401844 :00401511 8B07 mov eax, dword ptr [edi] :00401513 803836 cmp byte ptr [eax], 36 ; 6 :00401516 751E jne 00401536 :00401518 80780132 cmp byte ptr [eax+01], 32 ; 2 :0040151C 7518 jne 00401536 :0040151E 80780238 cmp byte ptr [eax+02], 38 ; 8 :00401522 7512 jne 00401536 :00401524 80780337 cmp byte ptr [eax+03], 37 ; 7 :00401528 750C jne 00401536 :0040152A 8078042D cmp byte ptr [eax+04], 2D ; - :0040152E 7506 jne 00401536 :00401530 80780541 cmp byte ptr [eax+05], 41 ; A :00401534 7417 je 0040154D Do eax idzie jakis napis... ktory nastepnie bajt po bajcie jest porownywany... po kolej z takimi znakami 6287-A. Jesli bedzie zgodny skoki sie nie wykonaja (pamietasz ktory skok sie kiedy wykonuje???). WDAsm cierpi na taka przypadlosc, ze... zmienia skoki... jz zamienia sie na je, a jnz na jne... Popatrz jesli eax nie bedzie rowne wykona sie skok z ktorejs z lin: :00401516(C), :0040151C(C), :00401522(C) :00401528(C), :0040152E(C). Co spowoduje, ze program nie dojdzie da linii 00401534 i nie bedzie mogl skoczyc poza komunikat... Domsyl sie... co moze byc pod eax??? serial??? name??? Nie raczej serial... wpisz wiec pod name jakies bzdety, ja np. wpisuje TepeX'2000, a jako serial wpisz 6287-A... I co??? komunikat Well Done, TepeX'2000. Hurra... kolejne crackme zlamane... A teraz obiecany drugi sposob... Uruchom crackme, wejdz do SoftIce pulapka na funkcje MessageBoxA (jak??? bpx nazwa_funkcji). Nastepnie kilknij na przycisk check... Softice sie lapie... teraz tylko F11. I co??? SoftIce sie staracil... spokoknie kilknij na przycisk... Softice znowu sie uaktwynil i znalazles sie zaraz za wywolaniem funkcji MessageBoxA... Teraz tylko F10 kilka razy, az wyjdziesz z tego call'a... kiedy wychodzi??? kiedy przejdziesz przez komende RET... Popatrz pare komend wyzej??? dobrze znane ci porownania... Huh... to juz kolejna 6 juz czesc... palce mie juz bola od pisania... 200 znakow na minute... za duzo tego, a jeszcze trzeba przy tym myslec... grrry... Ale czego sie nie robi dla nauki... Mam nadieje, ze cos z tego tutoriala wyniosles (jak to mowi moj kolega po jakis zajeciach: wynioslem... stol, lozko i dwa krzesla...). Do zobaczenie.... TepeX'2000 Ciekawe adresy: www.underground.org.pl - polskie podziemie... jest tam dzial crack prowadzony przeze mnie 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 ) bart - dzieki niemu wiem ze nie jestem JEDYNY w swoim miescie (Bytom) tato - dzieki niemu wiem ze nie jestem JEDYNY w swoim miescie (Bytom) oraz za mile przyjecie :)) (hello zyjesz???) Dulek - dzieki niemu wiem ze nie jestem JEDYNY w swoim miescie (Bytom) 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***