Professional Documents
Culture Documents
Cracking Bez Tajemnic
Cracking Bez Tajemnic
Cracking Bez Tajemnic
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
Cracking bez
tajemnic
Autor: Jakub Zemanek
Tumaczenie: Jerzy Kdziera
ISBN: 83-7361-444-3
Tytu oryginau: Cracking bez tajemstvi
Format: B5, stron: 304
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
Przedmowa........................................................................................ 9
Wstp ............................................................................................. 11
Czym jest cracking ............................................................................................................12
Oglne zasady ochrony przed crackingiem ......................................................................13
Zasady Marka..............................................................................................................13
Kolejne zasady ............................................................................................................14
Podstawowe pogramy uywane do crackingu ..................................................................15
Czy w ogle zabezpieczanie oprogramowania ma sens (I tak kto to scrackuje) .........16
Zawarto pyty CD ..........................................................................................................16
Spis treci
Spis treci
7
Messing in Bytes MiB ...................................................................................248
Crackers in Action CiA .................................................................................248
Phrozen Crew .....................................................................................................248
United Cracking Force UCF..........................................................................249
Ebola Virus Crew ...............................................................................................249
TNT ....................................................................................................................249
Evidence .............................................................................................................249
Da Breaker Crew ................................................................................................250
Wane miejsca i rda w internecie...............................................................................250
Kilka oglnych rad od crackerw ...................................................................................252
Cracking (Lucifer48) ..........................................................................................252
NOP Patching (+ORC) .......................................................................................253
Patching (MisterE)..............................................................................................253
Myle jak cracker (rudeboy) .............................................................................253
Tools (rudeboy) ..................................................................................................253
Rozdzia 3.
Ochrona
przed deasemblacj
Pojcie deasemblacji ju objaniaem chodzi o przeksztacenie programu do jego
postaci statycznej w asemblerze. Takie postpowanie pomaga zrozumie logik niektrych algorytmw i uzyska ogln orientacj w programie (zwaszcza w kwestii
wyszukiwania acuchw i importowanych funkcji oraz miejsc w programie, skd s
wywoywane i stosowane).
Wanie dziki moliwoci wyszukiwania uywanych przez program acuchw i importowanych funkcji deasemblery stay si bardzo popularne. Dziki tym funkcjom
cracker czsto moe si dosta do algorytmu zabezpieczajcego, bez przeszkd go
przestudiowa i nastpnie usun. To czyni deasemblery potn broni nawet w rku
todzioba.
Uywane deasemblery
Za standard w dziedzinie deasemblacji mona uzna dwa programy W32Dasm
i IDA. Oczywicie istnieje jeszcze szereg innych (np. wymienity OllyDbg), ale te
dwa s po prostu najpopularniejsze. Pierwszy z nich jest co prawda przestarzay, jego
rozwj zosta ju dawno wstrzymany i mogoby si wydawa, e praktycznie jest ju
nie do wykorzystania, jednak tak nie jest. Crackerzy bowiem na tyle go sobie upodobali, e pomimo zakoczenia jego rozwoju, kontynuuj jego udoskonalanie i wydaj
najrniejsze aktualizacje i poprawki. Jest to pikny przykad wykorzystania inynierii wstecznej do udoskonalenia programu.
Najrniejsze aktualizacje i poprawki znajdziesz na zaczonej pycie CD.
94
W32Dasm jest przeznaczony dla wszystkich grup uytkownikw. Nie mamy zbyt
wielkiego wpywu na przebieg i ustawienia deasemblacji, co rekompensowane jest
przez bardzo prost i intuicyjn obsug oraz przejrzysto kodu wynikowego. Program
oferuje tworzenie odnonikw do acuchw oraz funkcji importowanych, wyszukiwanie penotekstowe i wiele innych funkcji (po wprowadzeniu jednej z poprawek rwnie
np. zintegrowany edytor heksadecymalny), ktre w znacznym stopniu uatwiaj wyszukiwanie i orientacj w programie. Obsuga tego narzdzia opisana jest w dalszej
czci niniejszego rozdziau.
IDA lub Interactive Disassembler jest, jak ju sama nazwa podpowiada, w peni
konfigurowalnym profesjonalnym narzdziem do deasemblacji. To prawdziwy krl
deasemblerw, ktry dziki swoim moliwociom i funkcjom nie ma konkurencji.
Dziki niesamowitej elastycznoci tego programu (wliczajc w to moliwo pisania
skryptw w jzyku podobnym do C) mona bez problemw poprawnie deasemblowa
rwnie programy, na ktrych W32Dasm poamie sobie zby. Procesem deasemblacji mona bowiem sterowa rcznie i w wielu aspektach go modyfikowa. Te zalety odbijaj si nieco na obsudze, ktra na pocztku moe si wydawa troch nieprzejrzysta
i skomplikowana. Program przeznaczony jest raczej dla dowiadczonych uytkownikw i nie jest odpowiedni dla pocztkujcych.
95
Naciskajc na klawisz F10 lub pozycj menu Goto Program Entry Point przejdziesz
do punktu wejcia kodu zdeasemblowanego (na ten temat wicej dowiesz si w czci
o formacie PE). Moesz przej pod jakikolwiek inny adres naciskajc Shift+F12 lub
przycisk Goto Code Location.
Spis importowanych funkcji wywietlisz za pomoc przycisku Imports (rysunek 3.2),
a eksportowanych Exports.
Rysunek 3.2.
Zorientowanie si
w spisie funkcji
importowanych
nie jest problemem
Jeeli dwukrotnie klikniesz na wybran funkcj API, przejdziesz do miejsca jej wywoania w kodzie programu. Jeeli funkcja jest wywoywana wielokrotnie, w kolejne
miejsce, gdzie jest wywoywana, przejdziesz powtarzajc powysz czynno.
Odnoniki do acuchw wywietlisz uywajc przycisku String Data References.
Czsto moesz znale ciekawe acuchy, ktre doprowadz ci w sam rodek algorytmu zabezpiecze (rysunek 3.3). Jeeli sprbujesz zdeasemblowa jaki sharewareowy
program, znajdziesz tam najpewniej komunikat o poprawnie i (lub) niepoprawnie
podanych informacjach rejestracyjnych itd.
Rysunek 3.3.
Odnoniki
do acuchw mog
wiele podpowiedzie
Poruszanie si po znalezionych acuchach odbywa si tak samo, jak po spisie importowanych funkcji wystarczy klikn dwa razy znaleziony acuch aby przej
do kodu programu.
96
Stosowane algorytmy
Podobnie jak przy antydebugingu, tak w przypadku antydeasemblacji mona si zabezpiecza przed specyficznymi funkcjami deasemblera lub przed sam deasemblacj.
Jedyn rnic jest to, e kiedy w antydebugingu program broni si przed debugingiem aktywnie poprzez detekcj dziaajcego debugera (w ksice jednak przedstawi
rwnie inne metody stosowane w algorytmach ochrony przed debugingiem, ktre
utrudniaj sam debuging np. w tym rozdziale), w przypadku ochrony przed deasemblacj tak uczyni nie mona. Program bowiem, tak samo jak przy edycji kodu
programu w edytorze heksadecymalnym, nie jest uruchomiony, wic moe si broni wycznie pasywnie. Detekcja aktywna jest co prawda moliwa (np. za pomoc
wyszukiwania nazw uruchomionych procesw, nazw okien itd.), ale byaby zupenie
do niczego (nie baczc na fakt, e w odrnieniu od programu SoftICE, deasemblerw
i edytorw heksadecymalnych jest cae mnstwo).
Przed kilku laty, kiedy jeszcze nie byo deasemblerw tak rozwinitych jak dzisiaj,
mona byo zapobiec deasemblacji w prosty sposb. Do kodu programu dodawano
algorytmy oraz cigi instrukcji, ktrych kompilator nigdy by nie wygenerowa. Dziki
temu przy prbie dekompilacji (w tym przypadku mwic cilej deasemblacji) dochodzio do bdu lub zaptlenia dekompilatora; na przykad nastpujce cigi mylcych
instrukcji byy w przeszoci powszechnie stosowane:
97
Algorytmy podstawowe
Ochrona acuchw
Zapobieganie przeszukiwaniu stosowanych przez program acuchw jest cakiem
atwe: mona je zaszyfrowa (zamiast poprawnych acuchw pojawi si wwczas
wycznie bezsensowne znaki, ktre crackerowi nie uatwi zadania), zmieni lub
zmodyfikowa w inny sposb, a najlepiej zaprzesta (jeeli jest to moliwe) ich stosowania. Sposobw na to, jak zapisa jaki tekst do pliku, jest przecie bez liku.
98
Ta technika sama w sobie jest bardzo podatna na atak, poniewa mona za pomoc
spisu importowanych funkcji znale i wykorzysta kombinacj bardzo dobrze znanych
funkcji i , a ponadto w licie acuchw mona znale rwnie nazwy bibliotek oraz funkcji, co akurat rzuca si w oczy. Zalecam czenie
tej techniki z najrniejszymi innymi technikami ochrony importowanych funkcji
i acuchw.
Moesz si te spotka z algorytmem, gdzie adres importowanej funkcji okrelony
w jednym miejscu (chociaby z wykorzystaniem tabeli importw lub bez tego) zostaje
zachowany, a nastpnie wywoywany w zupenie innym miejscu. To tylko jeden
z wielu sposobw zapobiegania wywietleniu przez deasembler importowanej funkcji
w miejscu, gdzie naprawd najmniej tego potrzebujesz.
Praktyczny przykad wykorzystania powyszych metod znajdziesz w jednym z moich
przykadw crackme w rozdziale dziewitym.
99
Pasywny SMC
Spjrz na nastpujcy przykad:
?555 555)5 2555 55
?555 55
@ /%=0#/200A:B
)@)5@)
?555 5
.
?555 5
)E
@)
?555 5
?555 5
E
100
Wykonane zostan instrukcje pod adresami ! i i dojdzie do skoku pod
adres . Po skoku kod wyglda nastpujco:
?555 5
52555 55.
?555 5
@)
?555 5
?555 5
E
?555 5 J/)J5J
?555 5 /
?555 5
52555 55.
?555 5
@)
?555 5
?555 5
E
Po wykonaniu instrukcji pod adresem dochodzi do kolejnego skoku tym razem pod adres ":
?555 5 EJ
@
?555 5 .
?555 5 2555 5
?555 5 *E
?555 5
K@)
?555 5
?555 5
E
101
Aktywny SMC
Jednym z najlepszych sposobw ochrony kodu programu jest jego dynamiczne generowanie. Metod t ju zalecaem na pocztku pierwszego rozdziau, jednak dokadniej
zdefiniowana i opisana jest dopiero tutaj. Moim staraniem byo zgrupowanie implementacji SMC w jednym rozdziale chocia moliwe, e nie jest to najlepsze miejsce.
Nie chodzi w zasadzie o nic innego ni edycj kodu programu bezporednio w trakcie pracy programu. Tak jak wpisujesz dane do zmiennych, rejestrw, itp., moesz
spokojnie modyfikowa rwnie kod programu. Jedynym problemem jest to, e obszar
w pamici, do ktrego wpisujemy, musi mie charakterystyk '(, a wic
musi w nim istnie moliwo zapisu, w przeciwnym razie w programie zaistnieje wyjtek ()**+),)),%
$*
$-). Ten temat jest cile zwizany z formatem PE,
wic dowiesz si wicej dopiero w powiconym temu zagadnieniu rozdziale. Tymczasem wystarczy zastosowanie funkcji %, ktra z odpowiednimi parametrami umoliwi nam zapisywanie w uruchamialnym kodzie programu.
Aby zademonstrowa prawdziw moc i moliwoci SMC, wszystko poka na naprawd
prostym przykadzie. Przyjrzyj si nastpujcemu kodowi zapewne natychmiast bdzie
dla ciebie oczywistym efekt jego dziaania:
)+6,%
01!+$
()!"N(0<C<=10#:="7)3N$%
()!"N(<C<:<0<=10#:="7)3N$%
Konstrukcja z jest logicznie cakowicie zbdna, poniewa zawsze dojdzie do wywietlenia komunikatu Kod programu nie zosta zmodyfikowany. W asemblerze kod
zapiszemy mniej wicej tak:
33
4
/
2<9.3
>
()!"N(0<C<=10#:="7)3N$%
%
9.3?
()!"N(<C<:<0<=10#:="7)3N$%
Teraz do programu wstawimy wywoanie funkcji % i sprbujemy przepisa instrukcj -. przez instrukcj logicznie odwrotn .. Tym sposobem odwrcimy logik caego algorytmu i powinno pojawi si okienko komunikatu
/
z tekstem Kod programu zosta z powodzeniem zmodyfikowany. Kod wyglda nastpujco:
O,+-/%
33
4
+11-<0<
>
102
Wynikiem dziaania kodu po tej modyfikacji bdzie komunikat Kod programu zosta
z powodzeniem zmodyfikowany.
Jak widzisz, naprawd nie chodzi o adn nauk. Wystarczy drobna modyfikacja
w postaci wywoania funkcji API % poszerzajca prawa dostpu o moliwo zapisu (,0#10
* odczyt i zapis) w okrelonym obszarze pamici; w naszym przypadku w obszarze, gdzie wczytany jest uruchamialny kod programu.
Jak mwiem, to naprawd prymitywny przykad, ale wykorzystanie i potencja SMC
ilustruje wymienicie. Jak zawsze zaley tylko od ciebie, jak t technik dopracujesz
i ile czasu powicisz na projekt kodu programu.