************************************************************************* ************************************************************************* *************Witaj w tutorze #2 by TepeX !!!***************************** ************************************************************************* ************************************************************************* BYTOM woj.Slaskie dn. 6.02.2000 Witam!!! Trafiles/as wlasnie do drugiej czesci mojego tutoru ( jesli dopiero zaczynasz crack'owac do lepiej zajrzyj pierw co czesci pierwszej...). Dzis odcinek troche nietypowy, to jest bedzie o tym jak szybko i bez bolu lamac programy. Bedzie tez troche o Visual'u . P.S. Mam plyte o cracku 650 mg toolsow, stron, tekstow. A na niej - mirror fravii - ------ crackstore - ------ crackpl - ------ CookieCrk - ------ i kilku inncyh polskich i zagranicznych stron - wszystkie potrzebne programy!!! Istnieje mozliwosc zmiany zawartosci plyty ( nieznacznej ) !!!!!! A wszystko to za jedyne 20 zl + wysylka, jesli chcesz mail'me. Mozna tez odebrac osobiscie . Jedyny warunek musialbys przyjechac do Bytomia!!! P.S. Jak by niedaj .... ktos mnie szukal, to @-mail: zhrbytom@friko.internet.pl , lub IRC - kanaly #CrackPl, #Bytom, #Katowice, #MetalPL ---------------------------OSTRZEZENIE------------------------------- Wszystko co tu napisano, uczyniono wylacznie w celach edukacyjnych. Nie biore zadnej odpowiedzialnosci za skutki przeczytania tego textu. Poza tym nigdy na oczy nie widzialem debugera i nie wiem co to jest komputer ( aha! dzieki za pomoc w poprzedniej sprawie, gostek uwaza mnie juz za guru, niestety ma kolejne pytanie - co to jest mysz. POMOZCIE)!!! -----------------------------THE END-------------------------------- zhrbytom@friko.internet.pl***zhrbytom@friko.internet.pl***zhrbytom@friko.internet.pl*** zhrbytom@friko.internet.pl***zhrbytom@friko.internet.pl***zhrbytom@friko.internet.pl*** ZACZYNAMY!!! No dobra wychodze z zalozenie, ze przeczytales ( lub nie :( ) pierwsza czesc mojego tutoru i wiesz juz co nieco o crack'u. Obiecalem we wstepie ze pokaze wam jak szybko i bez bolu zlamac wiekszosc programow. No dobra... SoftIce przygotowany... .... START!!! Zalozmy, ze pierwszy raz uruchomiles program/crackme... co zrobic najpierw? Rozejrzyj sie co w nim siedzi. To jest: - czy mozna go zarejestrowac, - jak pokazuje niezarejstrowanie, - w czym jest napisany, - czy jest czyms spakowany, - itp. No dobra, omowmy to; - czy mozna go zarejestrowac Szukasz opcji register w programie, najczesciej jest pod help'em, lub w opcjach ( pilnie szukaj, czasmi jest dobrze ukryty ). - jak pokazuje niezarejstrowanie Gdzie i jak widac, ze jest unregister. Najczesciej jest do napis w oknie about, na pasku okna, w jakims nag'u. - w czym jest napisany Czasami mozna sie zorjentowac w czym jest napisany. W przypadku Visual Basica odwoluje sie do bilbiotek vbrun itp. W delphi jest to czasami ikonka delphi. Poszukaj, pobrobuj. Najczesciej widac to przregladajc kod programu pod hexedytorem - czy jest czyms spakowany Jesli program jest czyms napakowany to najczesciej widac to ogladajac plik *.exe pod hex edytorem. Dziwny naglowek (tzn. dziwne sekcje, haslo w stylu neolite, pepack, itp.), brak komunikatow swiadczy o spakowaniu programu. Najlepiej jednak widac, ze program jest czyms spakowany, wtedy gdy prubujesz go disasemblerwac - nie widac wtedy instrukcji, uzywanych funkcji itp. Gdy juz posiadamy takie informacje mozna zaczac program crackowa'c. Ponizej narysowalem schemat dzialanie ( taki plan bitwy ). Czy mozna go zarejstrowac??? | TAK | NIE ------------ ------------ | | | | | Czy szuka jakiegos dziwnego pliku??? | | | | | TAK | NIE | ____________________ ___________ | | | | | | | | Czy szuka jakis wpisow??? | | | | | TAK | NIE | | -------------- ---------- | | | | | | | | | | ------------- | | | | | | | | --------------- ----------- | | | | | LAMIEMY | STANDARDOWO USUWAMY UPRZYKRZACZE | Let's analyzy this!!! Po pierwsze - czy mozna go jakkolwiek zarejstrowac ( czy to przez haslo, dodatkowy plik, wpis w rejestrze itp.). Jesli nie to staramy sie usunac swiadectwa niezarejstrowanie (to jest nag'i, komunikaty itp.). Zalozmy, ze program da sie zarejstrowac na haslo, tudziez haslo i kod. Wpisujemy dowolne dane. I zastawiamy standarodowe pulapki na funkcje pobierace tekt ( GetDlgItemTextA i GetWindowTextA w normalnych programach, a __vbaStrCmp, MultiByteToWideChar w Visualowych). I teraz mamy kolejny schemat: Czy zadzialaly pulapki??? | Tak | Nie ---------------- ------- | | | | | Czy zadziala na inne pulapki | ( hmemcpy itp. ) ??? | | | Tak | Nie | ---------------- ------ | | | | | | | | Czy wykrywa jakos debuger'a??? | | | | | TAk | Nie | | ----------- --------- | | | | | | Usuwamy wykrywanie | | | | | | | Czy dziala | | | | | | | Tak | Nie | | | -------------- | | | | | | | | | -------------- | | | Czy korzysta z jakis dll'ow | | | ( niestandardowych )??? | | | | | | | Tak | Nie | | | -------------- ------------ | | | Szukamy funkcji | | | | | | | | | | | | | | Dziala??? | | | | TAK | NIE | | | | -------- ----- | | | | | |_________ ___________| | | | | | | | | | | | | | | Pulapka na komende okna | | | | Dziala??? | | | | | | | | | Tak | NIE | | | | ------------- --------- | | | | | | | | | | | Szukaj ??? --------------------------- | | LAMIEMY Huh!!! Skomplikowane??? Nie, dobrze sie przypatrz. W wiekszosci przypadkow kilka pierwszych krokow wystarczy, ale czasami... No, ale przeaanalizujmy to! :))) Zakladamy pulapke, dziala ??? nie to kolejne! Gdy to nie dziela patrzymy czy nie robi czegos dziwnego! To jest szuka wpisow w rejestrze itp. Gdy to nie dziala zdisasemblrowac i szukac ciekawych funkcji,dll'ow itp. Gdy jeszcze to nie dziala zakladamy pulapke na komende okna! Jak??? poczytaj w faq'u mNICH'a nr.5 - znakomite opracowanie! Mozna jeszcze poprobowac z pulapkami na okna, messagebox'y itp. Szukaj, a napewno znajdziesz... No dobrze dziala pulapka, a wiec teraz czas na lamanie. U mnie ten proces przebiega tak: 1. Patrze ile razy wywoluje funkcje (czasami sa to dwu cyfrowe liczby :( ). 2. Sprobuje zlokalizowac miejsce wyswietlenia okienka o zlym kodzie 3. Po jego zlokalizowaniu sprawdzam jakie sa wymagane warunki DOBREJ rejestracji 4. Probuje zrobic patch'a 5. Nastepnie zakladam pulapki (bpm i bpr) na pobranych namea'ch i serialach 6. Spisuje po kolei jakie operacje sa na nich wykonywane 7. Po spisaniu wszystkich operacji probuje "odwrocic " te operacje w celu wygenerowania wlasciwego seriala 8. Kiedy nie jest to mozliwe (z powodu np. przepelnien) lub jest to zbyt skomplikowane (np. jest kilkadziesiat operacji...) generuje serial metoda brutal force (czyli proba wszystkich mozliwych seriali). 9. Kiedy to sie nie udaje robie patch'a 10. Gdy i to nie wyjdzie odkladam program na pare godzin/dni/tygodni/ miesiecy i tak az do skutku Jeszcze jedno (naprawde juz ostatnie) jednym z NAJLEPSZYCH spobow szukania wlasciwego seriala, jest zaraz za pobraniem go, wyszukania go w pamieci i zastawienie pulapek na nich (zlamanie tym sposobem pajaczka i skrybe trwa mniej/wiecej 5 min!!!). No, ale jak to zrobic na poczatku szukamy - oto odpowiednie polecenie: S [-cu][ address L length data-list] address - odkad szukamy length - dokad szukac (najwyzej ffffffff) data-list - szukany napis To jest, np. s ds:0 l ffffffff "TepeX" Najprawdopodbnej znajdzie kilkanascie takich miejsc w pamieci, aby szukac dalej nacisnij s (samo s). Adresy zobaczysz w oknie data, gdy ich poczatkiem jest 8 albo C to te adresy sie nie licza!!! Jest to pamiec ekranu i Soft-Ice! Nie zakladaj na nich pulapek. No, dobrze ale jak zalozyc pulapke? Sa dwa spsoby: 1. BPM adres - pulapka na adres, zaklada dostep na caly napis 2. BPR adres adres+liczba_liter Atrybuty - to polecenie zaklada z kolei pulapke na dostep do KAZDEJ POJEDYNCZEJ litery/znaku z tanego stringu, to znaczy, ze np. gdy porownuje instrukcja repnz cmsbw 12 znakowy string to przerwie 12 razy! A oto przyklad: bpr 00433232 00433232+6 RW - dostep do szesciu znakow pod adresem 00433232 RW oznacza - read/write - czyli kiedy bedzie tam cos zapisywane i odczytywane. Szukamy tych stringow, potem pulapki i przy odrobinie szczescia znajdziemy sie bardzo blisko wlasciwego kody/instrukcji. MACRA Jesli zalezy ci na czasie to powinenes? dodac do swojego SoftIce instrukcje ktore pomoga ci latwo i szybko uzyc dlugich komend , lub wykonac kilka naraz. Cos takiego zwie sie makrami (tak jak w Excel'u o Wordzie). Aby zadeklarowoc macro nalezy dodac je do pliku winice.dat (znajdujacym sie w katalogu SoftIce) dodajemy je mniej/wiecej tak: ROZKLAD PLIKU WINICE.DAT: smieci int (blebleble) MACRO ........ MACRO ........ opisy klawiszy exportowane funkcje i inne smieci Jak widisz aby zadeklarowac macro nalezy wpisac je miedzy int a opisami klawiszy. Zobacz teraz jak powinien wygladac taki wpisik: MACRO nazwa_makra= "polecenie; polecenie;...;" np. MACRO text="bpx getdlgitemtexta;bpx getwindowtexta;" Spowduje ze SoftIe zalaozy dwie pulapki GetDlgItemTextA i bpx GetWindowTextA. Zobacz teraz czesc moich macr (proponuje ci zrobic podobne:))))))): 1. MACRO text=" BPX getdlgitemtexta DO "D esp->C;p ret;bpx getwindowtexta" 2. MACRO plik="Bpx createfilea do "d esp->4; p ret;" " 3. MACRO vname="bpx __vbastrcmp; bpx __vbastrmove; bpx __vbastrcomp" 4. MACRO wmessage="bpx rtcmsgbox; bpx rtcbeep; " 5. MACRO widename=" s 0 l FFFFFFFF 'T',0,'e',0,'p',0,'e',0,'X'" 6. MACRO bname="BPR dataaddr dataaddr+4 rw DO \"ddat\" " 7. MACRO bserial="BPR dataaddr dataaddr+5 rw DO \"ddat\" " 8. MACRO widename="BPR dataaddr dataaddr+8 rw DO \"ddat\" " 9. MACRO wideser="BPR dataaddr dataaddr+A rw DO \"ddat\" " A. MACRO name=" s 0 l FFFFFFFF 'TepeX' " B. MACRO serial=" s 0 l FFFFFFFF '987123' " C. MACRO wideser=" s 0 l FFFFFFFF '9',0,'8',0,'7',0,'1',0,'2',0,'3'" D. MACRO widename=" s 0 l FFFFFFFF 'T',0,'e',0,'p',0,'e',0,'X'" Przeanalizujmy to: 1. macro na dwie pulapki z tym, ze w przypadku wywolania funkcji GetDlgItemTexta w oknie danych pokaze ci co program czyta (takie male ulatwienie, kiedys o tym jeszcze napisze...) 2. tym razem program zaklada pulapki na funkcje tworzaca/otwierajaca pliki i tu tez zastosowano podobny trick, sprobuj - niesamowicie ulatwia sprawe... 3. pulapki na tekst visualo'wy (oczywiscie wiesz ze program visualowy ma swoje wlasne odpowiedzialne za to funkcje:PPP) 4. macro na okienka visualow'e 5. macro szukajace mojego nick'a w pamieci komputerka... a po co te zera??? poniewaz programy visualow'e zapisuja tekst w formacie WideChar - z takimi zerami, wiec jesli lamiesz program visualo'wy to nie zobaczysz normalnego nick'a tylko oddzielonego zerami 6. zaklada pulpke na znaleziony adres 7. I to by bylo na tyle ( leEeEe... ). Mam nadzieje, ze cos z tego faq'u wyciagnales :). Na koniec podam wam najczestsze pulapki do okreslonych czynow ( do programow 16 bitowych uzywaj ich bez A !!!!) A oto one: *******************Pulapki na pobranie text'u************************* GetWindowTextA GetDlgItemTextA GetDlgItemInt hmemcpy ( uwaga wywoluje sie za kazda litera!!! zalozyc po wpisaniu danych !) ***************************Na okna************************************ MessageBoxA DialogBoxParamA CreateWindow CreateWindowExA ************************Do odczytu plikow**************************** CreateFileA ReadFile ******************************Do daty******************************** GetSytemTime ******************************Do rejestru*************************** RegOpenKey RegCloseKey RegCreateKeyA RegQueryValueA RegoQueryValueEx *****************************Do visual'a*************************** __VbaStrCmp __VbaVarCopy __VbaStrCopy __VbaStrMove Do okienek visual'a rtcBeep rtcMsgBox I TU JUZ NIESTETY JEST KONIEC DRUGIEGO WYDANIA MOJEGO TUTORU!!! DO ZOBACZENIA ( W CZESCI TRZECIEJ ). 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 ) !!!!!!! TepeXTepeXTepeXTepeXTepeXTepeXTepeXTepeXTepeXTepeXTepeXTepeXTepeXTepeXTepeXTepeX zhrbytom@friko.internet.pl***zhrbytom@friko.internet.pl***zhrbytom@friko.internet.pl*** zhrbytom@friko.internet.pl***zhrbytom@friko.internet.pl***zhrbytom@friko.internet.pl***