A wienc ja Ci podam jeden program do Crackowania i zobaczysz czy to jest latwe czy nie . Powiem Ci jedno ze ja jak Crackuje do 2 tygodnie musze to robic bo inaczej mi nie bendzie dzialac ale masz tutaj program do Crackowania mam nadzieje ze cos zrozumiesz ;)
UWAGA - ZANIM ZROBISZ I PRZECZYTASZ W TEMACIE ROZPAKOWYWANIE NA DOLE POLA OZNACZONE ___ TO JEST SPAZIA I TEGO JAK ROBISZ MA NIE BYC . JA TO ZROBILEM BO Z SPACJA NORMALNOM WYGLONDALO BY TO INACZEJ
DOBREJ ZABAWY ;)
Olly Debugger
Introduction
Najważniejszym narzędziem pracy każdego crackera jest debugger. Chciałbym teraz przybliżyć znakomity debugger - OllyDbg, napisany przez goscia nazywającego sie Oleh Yuschuk. Olly nie jest tak jak SoftICE i TRW debuggerem systemowym zapomnij więc o debugowaniu sterowników. Ale przyznaj ile razy do tej pory było Ci to potrzebne? Olly jest debuggerem działającym w ring-3, okienkowym ze wszystkimi tego konsekwencjami (machanie gryzoniem). Bez zbędnej gadaniny Olly'ego sciagamy ze stronki [link widoczny dla zalogowanych] Do tego przydałyby się pluginy, ktore można sciągnąć z forum na . Potrzebne beda zwłaszcza pluginy do konwersji plików map z IDY, HideCaption i OllyDump. Zassane? Oki idziemy dalej.
Konfiguracja
Uruchamiamy Olly'ego. Co nic ciekawego nie widać? Spoko tak ma być :P. Wchodzimy w Options->Apperance. Odznaczamy "show toolbar" żeby zaoszczędzić trochę miejsca. Na zakładce "Defaults" ustawiamy font i schemat kolorów, metodą eksperymentu należy dobrać taki schemat aby nie męczyć sobie wzroku bo ten standardowy jest taki sobie. U mnie na 1024x768 najczęściej jest to Courier lub Fixedsys i schemat "Yellow on blue". W zakladce Directories nalezy zmienić ścieżki dodając na końcu każdej odpowiednio "udd" i "plugins". Unikniemy w ten sposob zaśmiecania głównego katalogu gdzie siedzi Olly. Nie zapomnij o utworzeniu katalogu "UDD"! Do "plugins" kopiujemy dwa dlle z katalogu Ollyego - bookmark.dll i cmdline.dll i resztę ściągniętych uprzednio pluginów.
Teraz przechodzimy do Options->Debugging (lub klikamy szachowniczkę w lewym dolnym rogu dialoga). Na zakładce "security" zaznaczamy "Allow stepping in unknown commands" "Allow code injection to get WndProc" a odznaczamy trzy ostrzezenia. W "Debug" zaznaczamy "Use hardware breakpoints". W "Events" zmieniamy "make first pause" na "entrypoint" dzieki temu Olly bedzie poprawnie ladowal spakowane pliki. Boxy nizej mozna zaznaczyc jesli chcemy aby debugger zatrzymywal program gdy ladowana jest biblioteka dll/tworzony nowy watek/wywolywana funkcja "OutputDebugString". Opcje na zakladce " exceptions" moga byc przydatne dla deugowania spakowanych progow. Na zakladce "Trace" konfigurujemy najwazniejsza z mozliwosci Ollyego - sledzenie wykonywania (Run Trace). Zaznaczamy "always trace over system dlls", "always trace over string commands", "synchronize cpu i run trace" i "after executing till RET, execute RET". Na "SFX" zaznaczamy "extend code section", "Use real entry form previous run" i "Pass exceptions to sfx" aby ulatwic sobie tracowanie spakowanych progsow. W "Strings" ustawiamy "allow diacritical chars" zeby widziec nasze poczciwe pliterki. W "Addresses" ustawiamy " Demangle symbolic names", "Show name of local module" i "Highlight symbolic names". W "CPU" ustawiamy "Show jump path" i "Show direction of jumps". W " Registers" "Decode registers for any IP", "Automatical FPU/MMX" i "Show Last error".W "Stack" zostawiamy jak jest. W "Analysis1" ustawiamy "show args and locals", "Decode cascaded IFs as switches" i "Decode tricky sequences".
Jesli chcemy aby Olly byl wywoływany gdy jakiś program wykona nieprawidłową operację włączamy Just-In-Time debugging w Options. Mozna tez dodać debugger do menu kontekstowego.
Teraz wypadałoby ustawić jakie okna mają być widoczne. Po restarcie ładujemy cokolwiek ( "cokolwiek" znaczy pierwszy exek, który się napatoczy). Pojawia się okno z disassemblacją i rejestrami. Metodą myszkową ustawiamy jego rozmiar tak aby wypełnił całą szerokość okna. Przydałyby się jeszcze lista breakpointów, referencji, ewentualnie modułów i mapa pamięci proga. Hmm okienka trochę zajmują przy czym można zauważyć przerost formy nad treścią. Na to znajdzie się rada pod postacią plugina HideCaption. Po rozmieszczeniu okienek wybieramy najpierw "Plugins->HideCaption->snap..." a potem "Hide Caption". W opcjach włącz ukrywanie pasków tytułowych przy starcie. Restartujemy Olly'ego jeszcze raz i powtarzamy operację z ukrywaniem pasków ( plugin nie radzi sobie z oknem disassemblacji gdy załadowany jest jakiś program). Voila tym oto sposobem przybyło nam trochę miejsca. Konfigurowanie Ollyego na razie zakończone, oczywiście polecam eksperymenty aby jak najlepiej dopasować debugger do swoich potrzeb/upodobań/humoru/etc...
Klawiszologia
Najważniejsze klawisze:
Tab - zmienia okna w granicach jednego okna MDI, np. w oknie CPU przeskakuje z disassemblacji do rejestrów, potem do stosu, pamięci itp.
F6 - aktywuj następne okno
Shift+F6 - aktywuj poprzednie okno
F10 - wywołanie menu podręcznego (tego które wyskakuje po wciśnięciu prawego klawisza myszy)
Alt+B - przejście do okna breakpointów.
Alt+C - przejście do okna CPU
Ctrl+N - wyświetlenie okna z importami, aby szybko odnaleźć daną API w tym oknie należy wpisać z klawiatury jej nazwę.
F2 - stawianie pułapki na danym adresie
Shift+F2 - pułapka warunkowa
Shift+F4 - pułapka warunkowa z logowaniem, warto się z tym zapoznać bo warunki dają naprawdę duże możliwości
F4 - wykonaj kod do kursora
F8 - wykonaj instrukcje, pomiń call
F7 - wykonaj instrukcję, jeśli to call to wchodzi do niego.
spacja - assembluj kod
; - wstaw komentarz
: - wstaw etykietę
Ctrl+A - analizuj kod
Ctrl+F - szukaj instrukcji
Ctrl+S - szukaj ciągu instrukcji, po opis odsyłam do helpa. Olly może szukać nie tylko instrukcji z jawnie zadeklarowanym typem oparandów ale mozna używać wyrażen ogólnych np. mov r32,1 znajdzie wszystkie instrukcje typu mov ebx,1
Ctrl+B - szukaj ciągu bajtów
Ctrl+J - wyświetl listę jumpów/calli do bieżącej lokacji
Ctrl+K - wyświetl call stack dla bieżącej funkcji
Ctrl+L - powtórz ostatnie szukanie
Ctrl+R - szukaj referencji do bieżącej lokacji/instrukcji
Ctrl+E - edytuj bajty (wyskakuje mały i poręczny edytorek).
Ctrl-F4 - zamyka okienka
F9 - uruchom/kontynuuj
Ctrl+F2 - restartuj debugowany program
Alt+F2 - zamknij debugowany program
F12 - zatrzymaj debugowany program
Ctrl+F9 - wykonuj dopóki nie natrafisz na ret
Alt+F9 - wykonuj dopóki nie wyjdziesz z bibliotek systemowych
Ctrl+T - ustaw warunek dla Run Trace
Shift+F9/F8/F7 - prześlij wyjątek do debugowanego programu
Ctrl+F11/Ctrl+F12 - uruchom Run Trace, program będzie wykonywany dopóki ustawiony warunek nie będzie prawdziwy.
Alt+O - opcje
Alt+F5 - zawsze na wierzchu
Alt+F1 - linia komend
Przy nabraniu wprawy można zredukować machanie myszą do niezbędnego minimum.
Rozpakowywanie
Dużą zaletą OllyDebuggera jest pomoc w rozpakowywaniu spakowanych exeków. Przykład: AAoCG Trial Crackme. Crackme jest spakowane FSG i udam, że nie wiem jak je efektywniej rozpakowac :P Ładujemy crackme do debuggera, pokażą się 2 boxy, w pierwszym klikamy "ok" a w drugim "nie". Wybieramy Plugins->OllyDump->Find OEP by section HOP (Trace over) i czekamy chwilkę. Lądujemy tutaj:
004067F0___ E8 F5140000__ CALL__aaocg_tr.00407CEA<=====
004067F5__68 88B04000__ PUSH__ aaocg_tr.0040B088
004067FA __50_______ PUSH_____EAX
004067FB___50_______ PUSH ____ EAX
004067FC__E8 AD140000__CALL __aaocg_tr.00407CAE ___; JMP to kernel32.CreateMutexA
00406801__E8 BA140000__CALL__aaocg_tr.00407CC0__ ; JMP to ntdll.RtlGetLastWin32Error
00406806__3D B7000000__CMP__EAX,0B7
0040680B__74 22 __JE__SHORT aaocg_tr.0040682F
0040680D__6A 00___PUSH__0
0040680F__E8 B2140000__CALL__aaocg_tr.00407CC6__; JMP to kernel32.GetModuleHandleA
Teraz wybieramy PLugins->OllyDump->Dump debugged process. Zdumpowany plik wymaga jeszcze poprawienia importów (np. Import Reconstructor).
Oczywiście można sobie poradzić bez plugina przy szukaniu OEP. Aby znaleźć EntryPoint skorzystamy z "Run Trace". Ładujemy crackme do Olly'ego. W mapie pamięci szukamy pierwszej sekcji crackmesa. Powinno to wyglądać mniej więcej tak:
Memory map
Address
00370000
00380000
00400000
00401000
0043C000
Size
00001000
00001000
00001000
0003B000
00011000
Owner
Pierwsze dwa nic w trzecim :
aaocg_tr
aaocg_tr
aaocg_tr
Section
W section Nic nie ma byc
Contains
W 3 ma byc napisane
PE header
code
SFX,imports,
Type
Priv
Priv
Imag
Imag
Imag
Access
RW
RW
R
R
R
Initial
RW
RW
RWE
RWE
RWE
Mapped as
I tutaj nic
Crackme ma więc 2 sekcje, ta w której pewnie jest OEP zaczyna się od adresu 401000 i ma długość 3B000 bajtów. Wciskamy teraz Ctrl+T lub w menu podręcznym w oknie CPU wybieramy Run Trace->Set Condition. W dialogu zaznaczamy "EIP is in range" i wprowadzamy nasz przedział 401000 - 43c000 ( 401000+3b000). Zamykamy okno i Menu Debug wybieramy najpierw "Open or clear run trace" a następnie "Trace over" lub wciskamy Ctrl+F12. Pijemy piwko dopóki Olly nie zatrzyma się na EIP w naszym przedziale. Troche to potrwa (okolo pół do 2 browarów). Lądujemy w miejscu zdisassemblowanym powyżej. Teraz wybieramy OllyDump->Dump debugger process. Oczywiście jest to tylko mały pokaz możliwości Run Trace. Jak zauważyłeś w dialogu Set condition można ustawiać tam prawie dowolne warunki z EIP, rejestrami itp. Run Trace ma jednak słabą stronę - jest strasznie wolne, czasami jednak okazuje się niezwykle przydatne.
Post został pochwalony 0 razy