Znalazłem to na necie. mam nadzieje, że sie wam przyda: Download: Rapidshare, Hotfile, Megaupload, Przeklej i Inne
Spis tresci:
I Crack
1. Wstep.
1.1 Kto to wlasciwie jest ten cracker???
1.2 Czy crack jest legalny? Co mi grozi?
1.3 Jak zaczac?
1.4 Newsy.
2. Pytania o SoftIce.
2.01 Czemu gdy probuje zalozyc jakas pulapke widze komunikat "Symbol not definited"?
2.02 Do czego sluzy Loader dolaczony do Softice?
2.03 Czy mozna sprawdzic jakie sa zaladowane funkcje API?
2.04 Czemu niektore programy nie lapia sie w Loaderze ? (poprawiony przez: Imaginative)
2.05 Jak mozna zmienic wymiary okna SoftIce?
2.06 Jak sprawic, azeby SoftIce nie reagowal na wyjatki (ang. faults)?
2.07 Jak sprawic, azeby Softice pokazywal kody hex'owe instrukcji?
2.08 Jaka komenda sluzy do szukania jakiegos ciagu znakow w pamieci?
2.09 Czy mozna sprawic, aby SoftIce przejmowal kontrole w momencie gdy program wywola
przerywanie 1 lub 3 ?
2.0A Czy mozna zastawic pulapke na konkretny adres, ktora wywola sie kiedy w EAX
bedzie np. 0?
2.0B A jak zalozyc pulapke kiedy nie znamy adresu, a np. EAX ma osiagnac 31323334?
2.0C Czy mozna jakos zmienic wielkosc czcionki, jej kolory itp.????
2.0D SoftIce pokazuje mi inne kody hexowe komend niz w rzeczywistosci, czemu?
2.0E Czy mozna zmienic wartosc jakiegos rejestru, bez modyfikacji kodu?
2.0F Jak zmienic wartosc flagi (inaczej znacznika)?
2.10 Jak mozna wyciac kawalek kodu programu z SoftIce?
2.11 Czy idzie jakos zrobic screen'a SoftIce?
2.12 SoftIce mi nie dziala... Co robic???
2.13 Jak sprawic, azeby SoftIce dzialal w okienku?
2.14 Jak zmienic wartosc hexowa na decymendalna i odwrotnie?
2.15 Po uruchomieniu symbol loadera(32) wyskakuje coś takiego:
"SoftICE is not active. Symbols cannot be loaded."... CTRL-D SoftIce jest... czyli
cos tu nie gra ale co?
2.16 Czy jest SoftIce w wersji pod Dos'a?
2.17 Wie ktos moze co trzeba zrobic, zeby byc w Entry Point programu za pomoca SoftIce?
2.18 Czy jest mozliwosc zrobienia patha do programow spakowanych, lub zakodowanych???
2.19 Czemu gdy zakladam pulapke na jakis adres to czasami pokauje mi sie komunikat
"Invalid adress"?
3. Pytania o anty-debug.
3.01 Program wykrywa zalozenie pulapki na dana funkcje, jak temu zapobiec?
3.02 Program wywoluje przerywanie INT 68, co moge zrobic?
3.03 W jaki sposob mozna ominac wykrywanie SoftIce poprzez metode zwana MeltIce?
3.04 Jakie sa najpopularniejsze techniki anty-debug???
3.05 A jak im zapobiegac?
4. Pytania o disasemblery.
4.01 Niektore programy nie disasembleruja sie czemu???
4.02 Jak sprawic, aby rozpakowany program dobrze sie disasemblerowal?
4.03 Jakie sa znane techniki anty-Wdasm?
4.04 Czemu WDasm nie pokazuje w SDR tekstow z Visual'a?
5 Visual Basic.
5.01 Czy jest jakis sposob na rozpoznanie z ktorej wersji bibliotek VB korzysta program?
5.02 Czy istnieja dekompilatory do Visual Basic'a?
5.03 W jaki sposob radzic sobie z programami pisanymi w tym jezyku?
5.03.01 Ver. 3.0
5.03.02 Ver. 4.0
5.03.03 Ver. 5.0
5.03.04 Ver. 6.0
6. Pytania ogolne.
6.01 Jak dobrac sie do programu zabezpieczonego dongl'em?
6.02 Jak sprawdzic jakich funkcji API uzywa program?
6.03 Jak mozna zmienic napisy w pliku?
6.04 Jak wyciagnac z pliku ikony, grafiki itp.?
6.05 Jak zmieniac kod programu?
6.06 Jak sprawdzic w czym pisany jest program?
6.07 Jak walczyc z tzw. Instal Shieldem?
6.08 Jak zmienic entry point w programie ?
6.09 Jak stwierdzic ze exec w progu jest spakowany, a jezeli jest to czym i jak go
rozpakowac?
6.0A Czym jest spowodowane pojawienie sie komunikatu procdumpa w czasie proby
rozpakowania .exe "Process not 32bits, not loaded or alresdy finished"?
6.0B Co to sa Loadery, do czego sluza i skad je wziasc?
7. Slownik pojec zwiazanych z crack'iem.
8. Spis podstawowych narzedzi wraz z krotkim opisem.
9. Screen ( wykonany z uzyciem IceDump'a ) z SoftIce wraz z krotkim opisem co i jak...
II Programimng
1. Asembler
1.01 Komendy...
1.01.01 Opis instrukcji "XOR"
1.01.02 Opis instrukcji "ROR" i "ROL"
1.01.03 Opis instrukcji "SHL" i "SHR"
1.01.04 Opis komendy "cmp".
1.01.05 Opis komendy "mov".
1.01.06 Opis komendy "add".
1.01.07 Opis komendy "sub".
1.01.08 Opis komendy "call".
1.01.09 Opis komendy "ret".
1.01.0A Opis komendy "push " oraz "pop".
1.01.0B Opis komendy "test".
1.01.0C Opis komendy "inc" i "dec".
1.01.0D Opis komendy "reps" i jej odmian.
1.02 Co znaczy porownanie Test EAX,EAX?
1.03 Co to sa flagi, do czego sluza i jakie jest ich znaczenie?
2. Spis funkcji API, dla:
2.01 Pobrania tekstu i operacji na nim...
2.02 Wyswietlania okien...
2.03 Dla czasu...
2.04 Dla programow pisanych w Visual Basic'u...
2.05 Dla rejestru...
2.06 Dla innych rzeczy...
III Rozne dodatki i takie tam...
1. Tabela kodow ASCII
2. Zbior link'ow do wielu stron o crack'u, asemblerze itp.
2.01 Strony polskie (9 link'ow)
2.02 Strony zagraniczne (99!!! linkow)
2.03 Strony o krytografii (1 glowny link...)
FF. Slowo koncowe i podziekowania.
********************************************************************************
*******
********************************* UWAGA ************************************************
******** Nie ponosze zadnej odpowiedzialnosci za niewlasciwe wykorzystanie *************
****************** zamieszczonych tutaj informacji *************************************
******* Wszystko co zostalo napisane, napisane jest w celach edukacyjnych **************
********************************************************************************
*******
I Crack
1.Wstep
Ostatnio duzo sie mowi o problemach nnewbies, mowi sie, ze nie maja swojego
glownego, przewodniego pliku - czegos gdzie znalezliby odpowiedzi na nurtujace
ich pytania. Wielu z nich pragnie prawdziwego, czystego zbioru pytan i odpowiedzi.
Oto on...
Zbior pytan i odpowiedzi... czyste, prawdziwe FAQ (Najczesciej Zadawane Pytania z ang.).
Staralem umiescic sie tutaj jak najwiecej pytan, probowalem przewidziec o co mozecie
pytac... Niestety JA, ani nikt nie jest w stanie tego zrobic... Dlatego prosze Was,
jesli brakuje Wam tutaj jakiegos pytania, piszcie na adres: zhrbytom@friko.internet.pl
a gwarantuje, ze w nowszej edycji znajdzie sie tutaj...
W ostatnim czasie dodalem tutaj takze zbior (dosc pokazny - 107 adresy) oraz slownik
pojec, oraz spis programow...
Milej lektury, zyczy wszystkim TepeX^CrackPl2ooo...
1.1 Kto to wlasciwie jest ten cracker???
Cracker... do tego slowa kazdy "niewtajemniczony" podaje inna definicje... np. wandal, ciasteczko itp. umysl ludzki wymslil juz tyle hasel... ze az strach myslec - co jeszcze?
W naszej definicji CRACKER jest to osoba:
- inteligetna (wbrew niektorym opinia :))))
- bardzo dobrze poslugujaca sie komputerem
- znajaca asemblera
- potrafiaca zmieniac kod programu, znajdowac odpowiednie hasla itp.
- zna sie na kryptografi (niekoniecznie... ale dobrze, azeby znal...)
- hmm...
W sumie wychodzi na to, ze cracker jest to osoba zajmujaca sie modyfikowaniem programu w
czesto jednoznacznych celach... stara sie "zlamac" zabezpieczenia programu, znalezc odpowiednie
haslo itp.
A co to jest crack? Jest to dziedzina pracy komputerowej (ale mi haslo wyszlo...) zajmujaca sie
ogolnie szerokim pojeciem kryptografi.
Ciezko ujac to slowami... kazdy robi to co tylko moze z programem, powstalo juz tyle mozliwych
produkcji, ze az glowa boli...
1.2 Czy crack jest legalny? Co mi grozi?
Hmm... crack NIE JEST LEGALNY... grozi za to pare dobrych lat wiezenia... aczkolwiek nie masz
sie czego bac... o ile wiem to jeszcze nikt nie polecial za crack... chyba ze rozumiesz pod tym
pojeciem piractwo :((( .
Zabronione jest JAKIEKOLWIEK dotykanie programu debugerem, disasemblerem... chyba, ze... no wlasnie Polskie prawo jest tak skomplikowane i zawile, ze niewiele osob lapie sie w tym wszystkim...
Polskie prawo poniekad pozwala debugowac program jesli chce sie go dostosowac do pracy z wlasnym dzielem... jak to ktos ujal np. z crack'iem...
Tak na marginesie Polskie prawo pozwala rowniez na legalne kopie zapasowe gier... ale kazdy sam wie jak to z tym bywa, np. LPM 2000, Roller Coster Tycon, itp...
W sumie proponuje sciagnac sobie z sieci pare ustaw i zaglebic sie w pouczajcom lekture.
Co grozi??? w sumie nic poza paroma latami... w wiezieniu... jednak odsetek crackerow wsadzanych do paki jest tak duzy, ze masz wieksze szanse na... wygrana w totolotka...
Wystarczy tylko nie pokazywac swoich prawdziwych danych, jak np. adres, imie nazwisko... chociaz niektorzy podali i nic... widaz policja mocno spi :))))... i jak tu sie bac???
1.3 Jak zaczac?
Pierwsze co potrzebujesz to komputer :)))... nie powaznie... Co muszisz miec/umiec:
- dostep do INET-u inaczej ciezko jes sciagac jakies progamy itp..
- znac asemblera - przynajmniej w stopniu podstawowym... wiecej nauczysz sie "trakcie"
- miec takie male cos w glowie zwane mozgiem...
- MIEC SZCZESCIE... najlepiej jak najczesciej... i jak najwiecej...
- ....
Gdy juz masz to wszystko to wypadalo by wejsc do sieci poszperac po stronach i sciagnoc parenascie mega programow... lub zamowic plytke ze stronami (np. u mnie...). A oto co potrzebujesz:
- debuger, najlpiej Softice ver.3/4
- disasembler np. WDasm, IDA,
- przyadlyby sie jakies monitory rejestru i plikow, np. FileMon, RegMonitor...
- kompilator asm'a, Masm albo Tasm (zaleznie od upodoban...)
- i wszystko inne co wyglada ciekawie i moze ci jakos pomoc :))))...
Gdy te programy leza juz na twoim dysku proponowalbym przeczytanie parenascie (tysiecy...) tutorow, o crack'u, ami'e i wszystkim innym z tym zwaiaznym... a potme juz tylko lamac, lamac i lamac... i nie dac sie zlapac :))))...
1.4 Newsy.
ver. 1.0 alpha - Jako ze jest to pierwsza wersja newsow nie ma :(((
ver 1.0 Beta - male poprawki... nowe materialy...
ver. 1.01 - jak wyzej... dodane materialy Imaginative...; nowe hasla w slowniku...
ver. 1.02 - dodano pkt. 1.3 Jak zaczac? , zbor linkow do stron o kryptografii 55 kb...
ver. 1.03 - punkt 9 - screen ze SoftIce... ulepszony slownik... pkt. 2.16, 2.17, 5.8 i
5.7..., dodano pkt. 10 "Asembler" wraz z podrzednymi, pkt. 11 "Funckje API"
wraz z pordzednymi, juz okolo 70 kb tekstu...
ver. 2.00 - kolejne zmiany... rozbudowany dzial anty-debug... juz ponad 80 kb tekstu
dodano pkt. 2.18 i inne... dadano rozdzial II i III...
2. Pytania o SoftIce.
2.01 Czemu gdy probuje zalozyc jakas pulapke widze komunikat "Symbol not definited"?
Odpowiedz jest bardzo prosta - po prostu nie masz ich (bibliotek) zaladowanych, aby to uczynic musisz wyedytowac plik winice.dat i w jego ostatniej sekcji (tej nazwanej:
Examples of export symbols that can be included for Windows 95 )usunac sredniki przed wywolaniem funkcji np.;EXP=darek.dll zmieniasz na EXP=user32.dll.
2.02 Do czego sluzy Loader dolaczony do Softice?
Mowiac krotko sluzy on do loadowania programow :). W praktyce chodzi tutaj, o to aby sledzic program od samego poczatku, uzywajac Loadera ladujemy na pierwszej instrukcji programu.
2.03 Czy mozna sprawdzic jakie sa zaladowane funkcje API?
Sluzy do tego komenda EXP nazwa_funkcji, parametrem nazwa_funkcji moze byc cokolwiek, np. poczatek nazwy jak getwin, jak tylko jeden znak g itp.
2.04 Czemu niektore programy nie lapia sie w Loaderze ?
Cos takiego wystepuje glownie przy programach spakowanych. Program spakowany modyfikuje wartosc Charakterisic sekcji Code, Data i innych, zmieniajac
C0000020 na C0000040. Jak to zmienic??? Wystarczy jakis programem (chyba ze umiesz recznie...) sluzacym do
Poprawka by Imaginative...
*Aby dalo rade zlapac/deasemblowac program pierwsza sekcja musi miec atrybut
executable... masz tu rozpiske atrybutow:
20000000 - executable object
40000000 - readable object
80000000 - writeable object
20 - Code object
C0000020=40000000 OR 80000000 OR 20
aby dalo rade zdeasemblowac proga, sekcja musi miec atrybut E0000020 ewentualnie
60000020. nie musi byc writeable... *
2.05 Jak mozna zmienic wymiary okna SoftIce?
Wysokosc okna modyfikujemy komenda lines wartosc, standardowo ustawiona jest na 25. Natomiast szerokosc okna zmieniamy komenda width szerokosc (standardowo 80).
2.06 Jak sprawic, azeby SoftIce nie reagowal na wyjatki (ang. faults)?
Sluzy do tego komenda Faults off/on, wlaczenie Faults on, wylaczenie Faults off. Standardowo wartosc ta jest ustawiona na wlaczona.
2.07 Jak sprawic, azeby Softice pokazywal kody hex'owe instrukcji?
Dokonac mozna tego instrukcja code on - wlacza wyswietlanie kodow, code off - wylacza.
2.08 Jaka komenda sluzy do szukania jakiegos ciagu znakow w pamieci?
Jest to s -cu address l length data-string, gdzie
-c nierozrozniej wielkosci liter
-u lańcuchy w formacie UniCode
address adres poczatkowy, np. ja uzywam ds:0
length dokad szukac, u mnie 80000000
data-string napis w cudzyslowiu jaki szukamy, np. "987123"
czyli mamy np. s ds:0 l 80000000 "TepeX", aby kontynuowac sprawdzanie wpisujemy samo s.
2.09 Czy mozna sprawic, aby SoftIce przejmowal kontrole w momencie gdy program wywola
przerywanie 1 lub 3 ?
Sluza do tego komendy I1here on/off i I3here on/off.
2.0A Czy mozna zastawic pulapke na konkretny adres, ktora wywola sie kiedy w EAX
bedzie np. 0?
Tak, mozna i jest to bardzo proste. Wystarczy uzyc operatora if, czyli np. komenda:
bpx 40211233 if EAX==FFFFFFFF. Spowoduje zastawienie pulapki, ktore uaktywni sie w momencie gdy program bedzie w tym adresie i EAX bedzie rowne FFFFFFFF, skad te ==, jest to zwyczajne porownanie C i C++.
2.0B A jak zalozyc pulapke kiedy nie znamy adresu, a np. EAX ma osiagnac 31323334?
Sluzy do tego komenda bprw modul atrybut if (rejestr==wartosc), czyli mamy np.
bprw getright R if (EAX==123456), pulapka na modul getright przy odczycie, kiedy EAX osiagnie wartosc 123456.
Na podstawie listu na liste dyskusyjna CrackPL Gustawa via Mandylion.
2.0C Czy mozna jakos zmienic wielkosc czcionki, jej kolory itp.????
Tak, do zmiany wielkosci czcionki sluzy do tego komenda Set font 1/2/3, gdzie standardowo jest ustawiona wartosc 1.
2.0D SoftIce pokazuje mi inne kody hexowe komend niz w rzeczywistosci, czemu?
Taka dziwna przypadlosc czeka czasami uzytkownikow procesorow AMD (i moze nie tylko) powinna pomoc mala zmiana w pliku winice.dat, na samym poczatku linie Pentium On, zamieniamy na Pentium off.
2.0E Czy mozna zmienic wartosc jakiegos rejestru, bez modyfikacji kodu?
Tak, i to bardzo prosto komenda r rejestr wartosc, lub samo r i znajdziemy sie w oknie z rejestrami, gdzie mozemy zmienic to co sie nam podoba...
2.0F Jak zmienic wartosc flagi (inaczej znacznika)?
Sluzy do tego komenda r fl znacznik np. r fl z. Wydajac komende r fl znajdziemy sie w oknie z flagami, gdzie poruszajac sie kursorami mozemy klawiszem INSERT zmieniac ich wartosci (patrzac jak ladnie zmieniaja sie nam skoki...).
2.10 Jak mozna wyciac kawalek kodu programu z SoftIce?
Wystarczy w czasie pracy nad programem wpisac komende u adres_poczatkowy L dlugosc.
Gdzie adre_poczatkowy to adres komendy od ktorej zaczynamy kopiowanie a dlugosc to
ilosc kopiowanych linii. A nastepnie wlaczyc Loader'a Numegi dolaczonego do SoftIce i
zapisac logi do jakiegos pliku. Wsrod wielu linii znajdziemy to co nas interesuje.
2.11 Czy idzie jakos zrobic screen'a SoftIce?
Trzeba posiadac dodatek do SoftIce zwany IceDump...
A nastepnie uzyc komendy: pagein n plik_wyjsciowy. Gdzie plik wyjsciowy to nazwa pliku gdzie
bedzie zrobiony screen.
2.12 SoftIce mi nie dziala... Co robic???
Jest to temat rzeka... Poprobuj zrobic WSZYSTKO, nawet to co uwazasz za nie razjonalne w
takich przypadkach... A wiec np. wylacz myszke, wlacz SoftIce w okienku, zmieniaj plik
winice.dat, wylaczaj makra. W ostatecznosci zmien system/wersje SoftIce/karte graficzna...
Sprobuj zmienic system operacyjny z win98 na win95, czyli rob to co tylko mozesz... a jak
nie to zmien SoftIce na TRW2000...
2.13 Jak sprawic, azeby SoftIce dzialal w okienku?
Zrob tak: menu start, programu, Numega, display adapter setup i wlacz opcje uniwersal
adapter setup... druga od dolu... zresetuj komp'a i ciesz sie Softice'm w okienku...
2.14 Jak zmienic wartosc hexowa na decymendalna i odwrotnie?
Z hex'ow na decymendlana robimy tak... wpisujemy ? wartosc_hexowa i wypisuje nam ladnie
SoftIce co i jak... Natomiast aby zmienic wartosc decymendalna na hex'y i inne urodzaje
wpisujemy "? +wartosc_decymendalna"... przed wartoscia musisz wpisac + (plus)...
2.15 Po uruchomieniu symbol loadera(32) wyskakuje coś takiego:
"SoftICE is not active. Symbols cannot be loaded." CTRL-D Ice jest czyli
coś tu nie gra ale co?
Przyczyna jest bardzo prosta... czyz nie bawiles sie ostatnio w zmienianie stringow SICE, Ntice i innych w pliku winice.exe??? jesli tak to hmmm... ma prawo tak sie dziac... czemu??? poniewaz
wlasnie Loader uzywa funkcji Anty-debug z sterownikami... Jak temu zaradzic??? zmien napisy na
jednakowew winice.exe (czy jak tam on sie zwie...) i w jakiejs bibliotece... lub zpatczuj Loadeda (chyba wiesz jak...)
2.16 Czy jest SoftIce w wersji pod Dos'a?
Tak istnieje i jest to chyba wersja 2.8. Jednak mozna inaczej... w nowszych SoftIcech - ver. 3x i 4x jest przy instalacji katalog w katalogu glownym SoftIce gdzie jest plik dldr... wystarczy
tylko uruchomic plik dldr.exe z nazwa innego pliku exe w parametrze i mamy loadera... czyli mamy np. dldr.exe dos.exe (plik dos.exe musi byc w tym samym katalogu... chyba...).
2.17 Wie ktos moze co trzeba zrobic, zeby byc w Entry Point programu za pomoca SoftIce?
To jest wlasnie zadanie Loader'a dolaczonego do SoftIce... szery jego opis, co i jak przeczytasz w punkcie 2.2.
2.18 Czy jest mozliwosc zrobienia patha do programow spakowanych, lub zakodowanych???
Tak, mozna... trzeba tylko zrobic to lekko inaczej... W wiekszoszci przypadkow jedynym wyjsciem
jest zrobienie tzw. loadera... W skrocie jego dzialanie polega na tym:
- wlaczasz loader
- wlaczasz progam
- loader czeka, az program dojdzie do odpowiedniego momentu
- kiedy to sie stanie zmienia kod programu, ale w pamieci!
Bardzo dobrze sposob tworzenia loader'ow, wraz z kodem zrodlowym opisany jest w ISSUE zinie
nr 1 albo 2...
Chociaz czasami mozna program tak zmodyfikowac, azeby szlo tylko nieznacznie zmieniajac plik
exe zmienic kod... bardzo dobrym przykladem to tego jest dzielo Dulka^CrackPl, ktory poradzil
sobie bardzo ladnie tak z jednym programem... jesli chcesz zobaczyc jak to zrobil to przegladnij
archiwum listy dyskusyjnej CrackPL-forum...
2.19 Czemu gdy zakladam pulapke na jakis adres to czasami pokauje mi sie komunikat
"Invalid adress"?
Wine? w tym przypadku ponosi SoftIce na spolke z Windowsem... jak zapewno zauwazyles
cos takiego dzieje sie w sytuacji, gdy chcesz zalozyc pulapke na adres 32 bitowy (8 znakowy)
w czasie kiedy aktualnie zatrzymales sie na procesie 16 bitowym (4 znakowym)... widac to
np. po adresach w sekcji code... raz za 4 znakowe (16 bit.) a raz 8 znakowe... jedyne
co mozesz zrobic to wylapac odpowiedni moment i wtedy zalozyc pulapke...
3. Pytania o anty-debug.
3.01 Program wykrywa zalozenie pulapki na dana funkcje, jak temu zapobiec?
Jako, ze jest to coraz bardziej popularny trick anty-debug wypadalo by nauczyc sie go zwalczac... Zalozmy ze progam wykrywa pulapke na GetDlgItemTextA,w takim przypadku ustawiamy pulapke na bpm GetDlgItemTextA. Wtedy program przejmie kontrole w momencie
porownania odopiedniej komorki pamieci z CC wtedy tylko r fl z i mozna spokojnie popatrzec jak SoftIce przejmuje kontrole...
3.02 Program wywoluje przerywanie INT 68, co moge zrobic?
Wystarczy tylko w danym, odpowiednim momencie przeszukac pamiec komputera komenda
s ds:0 l 80000000 CD,68. Nastepnie zalozyc na znalezione adresy i puscic program. Nastepnie kiedy juz przejmie kontrole wystarczy tylko zmodyfikowac rejestr EAX komenda
r eax 400 i wszystko bedzie cacy...
Prostszym sposobem jest uzycie takiej zmyslnej pulapki: BPX Exec_Int if ah==68.
Poprawka : niedawno zostal wynaleziony nowy bardzo ciekawy sposob... wynaleziony zostal
przez Plastka, zrob tak wez znajdz plik wmm.vxd i szukamy takiego ciazgu hexow:
B4 43 CD 68 3D 86 F3 i zmien liczbe 43 na jakas inna np. na 50... nastepnie musisz
taka sama zmiene uczynic w pliku winice.exe... tylko ze teraz szukasz ciagu:
80 FC 43 0F 84 26 01 80 i znow zmieniamy 43 na ta sama liczbe co poprzednio...
3.03 W jaki sposob mozna ominac wykrywanie SoftIce poprzez metode zwana MeltIce?
Na poczatku krotkie info o tej metodzie... jest to jedna z najczesciej stosowanych i ...
najprostszych metod anty-debug, polega na probie utworzenia/otwarcia pliku o nazwie
vxd'ka SoftIce, sa to pliki \\.\SICE, \\.\NTICE oraz \\.\SIWVID. Najczesciej uzywana
jest do tego funkcja CreateFileA. Coz wiec za tem zrobic??? Najprosciej uzyc jakiegos
programu do "zabezpieczania" SoftIce, jak np. Frog's Ice. Jednak jezeli nie mamy tak
wymyslnych narzedzi pod reka, trzeba sobie poradzic recznie... czyli mamy dwa makra:
MACRO nosice="ED*(ESP+4) 0;PRET"
MACRO nosi="BPX CreateFileA If *(*(ESP+4)+4)=='SICE' DO "nosice"
wpisujemy je do pliku winice.dat, potem przed programem wpsiujemy w SoftIce "nosi" i
mozemy isc spac spokojnie do domu...
Jeszcze kolejnym wyjsciem jest modyfikacja pliku winice.exe i usuniecie podejrzanych
napisow... nie dotykaj tylko napisow SIWVID, gydz spowoduje to napewno zawieszenie
pracy kmputera przy ponowym uruchomieniu (wystapia bledy z vxdekiem....)
3.04 Jakie sa najpopularniejsze techniki anty-debug???
Huh... technik tych ostatnio namnozylo sie ostatnio... oto najpopularniejsze
(materialy z pakietu Stona, Rad'a oraz strony CrackPL):
- proba utworzeniu pliku ze sterownikami (vxd'kami) SoftIce czyli np. \\.\SICE itp.
jesli zwroci blad mamy SoftIce
- wywolanie int 68 z gdy ax==43h, jesli pod ax bedzie potem F386 to mamy Softice...
- przeszukanie pamieci w poszukiwaniu stringu winice.brk
- przeszukanie autoexec'u w poszukiwaniu stringu z SoftIce...
- przeszukanie rejestru w poszukiwaniu: wpisu HKEY_LOCAL_MACHINE\SOFTWARE\NuMega\SoftICE :(((
- wywolanie SetUnhandledExceptionFilter, czyli obsluga wyjatkow
- szukanie pulapek na rozne funkcje... np. GetDlgItemTextA, czy MessageBoxA...
- int 3, gdy w eax==4 a w ebx=="BCHK"
3.05 A jak im zapobiegac?
Co do szukania stringow Softice w pamieci (SICE, NTICE) do masz podane to wyzej... pod nazwa MeltIce. Podobnie z Int68 i pulapkami na funkcje...
Jesli chodzi o rejestr i autoexec, to najlepiej w rejstrze usunac podejrzane napisy (SoftIce i bez tego chodzi...), a w autoexec'u dac odnosnik np. do pliku a.bat, gdzie bedzie lezakowac link do SoftIce...
Gorzej z kolejna metoda czyli szukaniem napisu winice.brk w pamieci... sa dwa wyjscia:
- zainstaluj SoftIce ver.3.23 lub 3.22 i uruchom program zwany SiceTool, jesli chcesz mail me... umozliwia on WSZELAKA obrone SoftIce... w tym przed ta metoda...
- dojscie do odpowiedniego kodu programu i zmiana skokow...
W przypadku funkcji SetUnhandledExceptionFilter sprawa sie troche komplikuje... najlepiej zobaczmy to na przykladzie z jakiegos crackme...
:00401000 mov dword ptr [00402015], esp
:00401006 push 00401025
:0040100B Call SetUnhandledExceptionFilter
:00401010 mov ebp, 4243484B
:00401015 mov eax, 00000004
:0040101A int 03
:0040101D tu jakies inne niemile rzeczy np. ExitProcess...
Program "nie sledzony" w momencie dojscia pod adres 0040101a skoczy do linii podanej jako
ostatni parametr funkcji SetUnhandledExceptionFilter... jaki to paremetr??? push 00401025...
W przeciwnym wypadku program poleci sobie dalej i.... wywola sie jakas swinska funkcja np.
call ExitProcess...
Jak temu zaradzic??? najlepiej spachowac exeka... dojdzmy do linii 00401010 lub 0040101a i
zmienmy kod... np. na jmp 00401025...
No to teraz czas na int3 z eax=4 i ebx="BCHK", tu pomoze mala modyfikacja pliku winice.exe
Ladujemy plik winice.exe i szukamy ciagu: 4b 48 43 43 (jest to odwrocony napis BCHK)... i
zmieniamy go na jakis inny dowolny...
UWAGA!!!
Zmiany takie moga miec jeden przykry skutek... ostatnio sie otym przekonalem lamiac
pewne crackme... autor jego (LobiX) wysilil sie nad falszywa procedura dostepna dla
osob uzywajacych SoftIce... ja natomiast majac spachowanego SoftIce nie zauwazylem
tego zabiegu... byla potem niezla zabawa podczas rozmowy z autorem, ktory chcial
dowiedziec sie jak "omninalem" to zabezpieczenie...
4. Pytania o disasemblery.
4.01 Niektore programy nie disasembleruja sie czemu???
Winna moze byc dwojaka (a nawet trojaka... ale o tym kiedy indziej...).
Po pierwsze moze to byc wina spakowania pliku, jakims pakerem. Drugim winowajca
moze byc jakis kawalek kodu zawierajacy jakies sztuczki anty-disasembler.
W pierwszym przypadku pomaga rozpakowanie, a w drugim reczne debugowanie, albo
zmiana disasemblera...
4.02 Jak sprawic, azeby rozpakowany program dobrze sie disasemblerowal?
Najpierw nalezy sprawdzic czy program nie jest spakowany jakims exepackerem albo
protectorem... jezeli nie, nalezy sprawdzic wartosci charackteristics naglowka PE pliku.
Aby program mogl byc deasemblowany, pierwsza sekcja musi miec atrybut 60000020 lub E0000020.
4.03 Jakie sa znane techniki anty-Wdasm? (by Imaginative)
****************************** Tekst Imagninativa *********************************************
Najprostsza metoda przeciwko W32Dasm debugger jest sprawdzenie, czy nie jest otwarte jego okno.
Jak to zrobic? Oto kod procedury wykrywajacej w32dasm i w razie wykrycia zamykajacej go -;)
; w sekcji .data nalezy zadeklarowac nastepujaca zmienna
; szW32Dasm db "URSoft W32Dasm Ver 8.93 Program Disassembler/Debugger",0
; a oto kod wykrywajacy i wylaczajacy w32dasm:
;...
push offset szW32Dasm
push 0
call FindWindowA
cmp eax,0
je dalej
push 0
push 0
push WM_CLOSE
push eax
call PostMessageA
dalej:
;...
Innym sposobem anty-w32dasm jest utrudnianie deasemblacji. Mozna to zrobic w nastepujacy sposob:
;...
jmp dalej
db 23h
dalej:
;...
najlepiej umieszczac ten fragment przed instrukcjami jedno lub dwubajtowymi... aby zobaczyc jak
dziala napisz proga uzywajacego tego snippetu i zdeasembluj go. Mozna pokombinowac z wartoscia
po db aby uzyskac lepsze wyniki -;). Aby ulatwic stosowanie snippetu mozna zapisac go jako makro
_fuck_dasm macro
LOCAL f
jmp f
db 23h
f:
endm
i w programie zamiast wpisywac caly snippet wystarczy wpisac
;...
_fuck_dasm
;...
************************** Koniec tekstu Imaginativa ******************************************
A oto kawalek kodu programu Ptaska (z tego co wiem wyklada WDasm'a, a jak z IDA to nie wiadomo...):
.386
locals
jumps
.model flat,STDCALL
extrn ExitProcess:Proc
.data
wskaznik:
xchg eax,ecx;kod instrukcji - 91h
xchg eax,ecx
xchg eax,ecx
xchg eax,ecx
xchg eax,ecx
xchg eax,ecx
xchg eax,ecx
xchg eax,ecx
xchg eax,ecx
xchg eax,ecx
jmp koniec
.code
start:
mov edi,offset wskaznik;adres w selektorze danych
mov ecx,10
petla:
dec byte ptr [edi];zmniejsz 10 bajtow, kazdy o 1 co daje 90h(NOP)
inc edi
loop petla
jmp wskaznik;a teraz skocz i wykonuj co siedzi w data(czyli nop'y)
koniec:
push 0
call ExitProcess
end start
4.04 Czemu WDasm nie pokazuje w SDR tekstow z Visual'a?
Winowajcom w tym przypadku jest maly kawalek kodu WDasm'a... Aby to naprawic
trzeba zmienic ciag 28f6ff zpod offsetu 16B6C na 98F4FF... Proste??? A wiec
hexedytor w dlon i zmieniamy...
5. Visual Basic
5.01 Czy jest jakis sposob na rozpoznanie z ktorej wersji bibliotek VB korzysta program?
Widac to patrzac na zbior funkcji importowanych przez program... mozna to uczynic np. Quick View
Plusem, czy WDasm'mem. Oto odopowiednie bilioteki dla odpowiednich wersji:
vb300.dll - dla ver. 3.0
vb400.dll - dla ver. 4.0
msvbvm50.dll - dla ver. 5.0
msvbvm60.dll - dla ver. 6.0
5.02 Czy istnieja dekompilatory do Visual Basic'a?
Obecnie dekompliatory wystepuja chyba tylko do wersji 3 i 4... Jak z
innymi to jeszcze nie wiadomo... ale sadze, ze w niedalekiej przyszlosc
nie bedzie problemow ze znaleznieniem dekompilatorow do nowszych wersji...
5.03 W jaki sposob radzic sobie z programami pisanymi w tym jezyku?
Huh... trudne pytanie... w ogole panuje pojecie: "Chcesz dobrze zabezpieczyc
program napisz go w Visual Basic'u...". Pojecie to sprawdza sie w wielu
przypadkach... jednak istnieje kilka skutecznych sposobow...
Sposob odpowiedni do wersji:
5.03.01 Ver. 3.0
Dekompilator... jest najlepszy w tym przypadku... chwila i problem z glowy....
5.03.02 Ver. 4.0
Jak wyzej... dekompilator.... a jesli nie to jest mautki sposobik na okienka
z serialem:
- uruchamiamy program
- wpsujemy dane
- pulapka hmemcpy
- przechodzimy do kodu
- wpisujemy komende:
s 0 l FFFFFFFF 56,57,8B,7C,24,10,8B,74,24,0C,8B,4C,24,14,33,C0,F3,66,A7
- jak znaleziono jakis adres to "bpm dataaddr"... i tak do konca....
- puszczamy program...
- patrzymy na rejestry Esi,Edi i inne i wydzimy odpowiednie kody...
5.03.03 Ver. 5.0
No coz... do tej wersji nie ma jeszcze dekompilatora...
Pierw sporoboj pozakladac pulapaki na funkcje uzywane przez programy
Visual'owskie... jesli to nie dziala to uzywamy nowego narzedzia
Numegi :)... zwie sie to SmartCheck... jest to najlepsze narzedzie do
lamania programow visualowskich...
jak go uzywac? polecam bardzo dobry tutor grupy aaocg... adres na koncu...
jest to chyba tutor numer 2 albo 3...
5.03.03 Ver. 6.0
Z tym jest najgorzej... dzialanie podobne jak powyzej... SmartCheck i
funkcje... czasami sa to normalne funckje API!
6. Pytania ogolne.
6.01 Jak dobrac sie do programu zabezpieczonego dongl'em?
Przewaznie skutkuje pulapka na dostep do portu 37F lub innych COM. Czyli mamy np.
dla SoftIce taka pulapke: bpio -h 37F. Potem tylko zmiana paru skokow i mamy
problem z glowy...
Jednak w przypadku HASP'a nie dziala to i trzeba szukac innej drogi...
Np. poprzez MessageBoxA...
6.02 Jak sprawdzic jakich funkcji API uzywa program?
Najprosciej mozna to uczynic disasmeblerujac program np. WDasm'em, chociaz
dla duzych plikow exe nie jest to dobry sposob... Lepiej zrobic to jakims
edytorem zasobow, mozna tez programem Quick View Plus (ktory mozemy przy okazji
sobie zarejestrowac dal rozrywki...).
6.03 Jak mozna zmienic napisy w pliku?
Podobnie jak powyzej skutkuje uzycie edytora zasobow, np. Borland Resource
Workshop, jest on dolaczony do Pascal'a. Mozna tez znalezc go na jakiejs
stronie WWW o crack'u np. strona grupy cookiecrk.
6.04 Jak wyciagnac z pliku ikony, grafiki itp.?
Patrz wyzej... Proste, latwe i przyjemne...
6.05 Jak zmieniac kod programu?
Pierwszym krokiem jaki musimy uczynic jest znalezienie kawalka kodu jaki
musimy zmodyfikowac, np. mozna to uczynic za pomoca SoftIce. Wpisujemy komende
code on i widzimy po lewej stronie kody hexowe instrukcji. Znajdujemy odpowiedni
moment w kodzie programu, spisujemy kody z kilku linijek kodu (czemu z kilku
linijek??? bo jak spiszesz z jednej linii znajdziesz potem kilkadziesiat takich
miejsc i potem nie wiesz, ktory jest wlasciwy...).
Nastepnie musisz wiedziec na co musisz zmienic dany kod. Jak??? tu jest maly problem
musisz dowiedziec sie jak ma wygladac hex'owo zmodyfikowany kod. Jak???
najlepiej zrobic to w SoftIce, najezdzamy na interesujaca linie, wpisujemy: " A "
nastepnie piszemy nowa instrukcje kodu. Spisujemy nowy kod hexowy i dokonujemy
zmian...
UWAGA!!!
Zdarzyc sie moze, ze przy jakiejs zmianie nie beda ci sie zgadzaly ilosci bajtow,
np. skok ma dwa bajty, mov 3 albo 4. Wolne miejsce trzeba jakos zapelnic, czyni
sie to wpisujac w wolne miejsce 90 (kod hexowy instrukcji NOP, ktora nie czyni nic...).
Przyklad:
0028:C00038FD 8BF9 MOV EDI,ECX
0028:C00038FF 8B09 MOV ECX,[ECX]
0028:C0003901 3BCF CMP ECX,EDI
0028:C0003903 740E JZ C0003913
musimy sprawic azeby skok z linii 0028:C0003903 zawsze sie wykonywal... Uczynimy to
tak... zamiast JZ uzyjemy JMP. JMP ma kod hexowy EB. A wiec dokonujemy zmiany:
0028:C00038FD 8BF9 MOV EDI,ECX
0028:C00038FF 8B09 MOV ECX,[ECX]
0028:C0003901 3BCF CMP ECX,EDI
0028:C0003903 EB0E JMP C0003913
Spisujemy kody hexowe z tych czterech komend i w jakims hex edytorze zmieniamy
odpowiednie wartosci.
6.06 Jak sprawdzic w czym pisany jest program?
Oto odpowiednie przepisy:
Delphi - widac w pliku exe napis delphi :))),a pod sekcja Pe napisy w stylu
string, bollean itp.
C++ - analogicznie jak wyzej, ale zamiast delphi jest C++
Visual - podczas debugowania takiego programu poruszasz sie po
bibliotece VB4000, czy msvbvm50 czy 60...
Asembler - trudno... jedyne co moze o tym swiadczyc to maly kod
programu, bez zbednych smieci... poprostu sama rozkosz
w debugowaniu, dla takich programow mozna nawet jezdzic
po dead listingu :))))))))))))))))))))))))))))))... Czasami
widac jakies info o kompilatorze....
6.07 Jak walczyc z tzw. Instal Shieldem?
Co to jest???? Jest to jezyk skryptowy sluzacy do pisania programow
instalacyjnych... Wiekszosc z obecnych programow uzywa tego badziewia...
Najprostszym sposobem jest... zdekompilowanie uporczywego programu...
Wlasciwie to nie programu ale pliku *.ids - to wlasnie tam zapisany jest
prawie caly skrypt programu...Dekompilator znajdziesz na jakiejs stronie...
o adresach ponizej...
Potem masz dwa wyjscia mozesz albo odgadnac co program robi z kodem, albo
zmodyfikowac kod w dekompilatorze... opcje taka umozliwia pare tego typu
programow, aczkolwiek nie wszystkie...
6.08 Jak zmienic entry point w programie ?
Aby zmienic EP pliku wykonywalnego najlepiej uzyc jakiegos ogolnie dostepnego
narzedzia, np. ProcDump'a... Instrukcja ta bedzie wlsnie pod ten program... o oto ona:
- uruchom ProcDump'a
- wybieramy "PE Editor"
- ladujemy plik "ofiare" ...
- wpisujemy w polu Entry Point nowy adres... i dajemy przycisk "OK"...
6.09 Jak stwierdzic ze exec w progu jest spakowany, a jezeli jest to czym i jak go rozpakowac?
Program spakowany charakteryzuje sie kilkoma cechami:
- nie laduje sie do Loader'a...
- nie disasembleruje sie...
- w pliku EXE widac jakies podejrzane napisy... a nie widac tych "naszych..."
- dziwne wartosci niektorych sekcji PE...
- dziwne "nowe" sekcje PE
Najlpiej okreslic czy program jest spakowany jakims "komercyjnym" programem np.
ExeScope... Poszukaj, pobrobuj... w 99% autor pakera pragnac sie zareklamowac umieszcza
w spakowanym pliku info o sobie :))) najczesciej na poczatku lub koncu...
Apropo rozpakowywania plikow to sa dwie mozliwosci:
- uzyc jakiegos programu (np. ProcDump'a) z wbudowanym skrytami do bardzo wielu pakerow...
sposob skuteczny na znane pakery...
- recznie rozpakowac program... skuteczna jest metoda: Softice+IceDump+ProcDump...
Oto on:
- patczujemy SoftIce IceDump'em...
- Ladujemy plik "ofiare" do Loadera Numegi (najpierw musimy go do tego przystosowac, patrz pkt. 4.2)...
- dochodzimy do miesca gdzie rozpoczyna sie "wlasciwy" programa (a nie paker)... najczesciej ten moment odbywa sie poprzez skok jmp EAX, gdzie program skacze pod adres 00401000... zreszta sam zobacz... przewaznie widac to bardzo wyraznie...
- wpisujemy komende: Pagein B "nazwa_okna_ProcDump'a_Bhrama_Servera..."... no wlasnie ProcDump sie klania... ma on takie cos co zwie sie Bhrama Server... po jego zalaczeniu pokazuje sie okienku czekajace na komenda... no wlasnie ta powyzsza... w momencie
jej odebrania ProcDump przemieli nam cala pamiec i utworzy wlasciwy plik exe... zawierajacy caly program... nazwa_ok(...) jest poprostu nazwa tego okna Bhrama u mnie: "ProcDump32 - Dumper Server"... jak pewnie sie domysliles przed cala zabawa nalezy go
miec wlaczonego... teraz tylko podajemy nazwe pliku i mamy ladniutki pliczek...
7. Slownik pojec zwiazanych z crack'iem.
anty-debug - sztuczki majace na celu utrudnienie sledzenia programu... obecnie wiekszosc
takich sztuczek jest skierowana przeciw SoftIco'wi... jednak w najblizszym
czasie tendencja ta zmieni sie na korzysc TRW... najprostszymi sztuczkami
sa np. MeltIce, INT 68, SetUnhandledExceptionFilter
anty-disasembler - podobnie jak powyzej z tym,ze skierowana przeciw disasemblerowi...
o przykladach takich sztuczek poczytasz powyzej w punkcie o disasemblerach...
API - zbior funkcji w systemie Win, funkcje zdefioniowane sa w plikach *.dll, najpopularniejsze to np. user32.dll, kernel32.dll... programu tworzone w
systemie Windows operuja przy wszelkich operacjach na tych wlasnie funkcjach
nie na przerywaniach (jak w Dosie...) choc mozna tez i na przerywaniach w
niektorych momentach (np. przy wykrywaniu SoftIce... :))) )
breakpoint - tzw. pulapka, po jej zastawieniu np. na pobranie text'u program bedzie
(w ktorym zastawilismy pulapke - najczesciej debuger) przejmie kontrole
po wywolaniu funkcji pobierajacej tekst
brutal-force - metoda lamania hasel/seriali itp. rzeczy, polega na sprawdzeniu wszystkich
mozliwych hasel/seriali, jedna z najwolniejszych, ale jednoczesnie najlepszych
metod... pomaga wtedy, gdy nie da odwrocic sie haslo normalna metoda reverse...
, obecnie wypierana przez swojego mlodszego kolege... algorytmy genetyczne...
Metoda bardzo prosta, uniwersalna i gwarantujaca bardzo dobre wyniki w BARDZO
szybkim czasie...
Cd-check - zabezpieczenie cd-romu, najczesciej uzywane w grach do sprawdzenia
obecnosci w napedzie plyty cd z gra... obecnie duza popularnoscia
ciesza sie cyfrowe podpisy plyt tzw. SafeDisc
crack - dzielo cracker'a majace umozliwic pokazanie jak latwe i proste
jest przerobienie programu jednym MALYM plikiem... a tak powaznie...
"poprawka" do pliku... usuwajaca jakos niedogodnosc, np. nag-screen
cracker - osoba (bardzo inteligetna :))) ) starajca sie doglebnie
poznac dzialanie programow ( i nie tylko ), czasto uwazana
ze zlo doczesne (gorsze od AIDS?!), ktore nalezy za wszelka
cene wyplewic ze srodowiska
crackme - program od cracker'a dla cracker'a, swoistego rodzaju proba sil
i umiejetnosci, czesto zlamanie go pozwala na przystapienie do jakiejsc
grupy crackerskiej...
Debuger - program umozliwiajacy podgladanie (wlacznie z ingerencja) wykonywania programow,
w zamierzeniach ma sluzyc programistom do znajdywania bledow w programach i
kontrolowania ich wykonywania, ale wiadomo jak to jest ... i co sie dzieje ...
i teraz jest naszym podstawowym narzedziem "pracy"
dekompilator - program umozliwiajacy wyciagniecie kodu zrodlowego z pliku exe, z tego
co wiem istnieja dekomplilaotry do visual'a, delphi oraz javy...
dead code approach - termin wprowadzony (jak wiekszosc...) przez +ORC... polega na analizowaniu
kodu programu poprzez... wydruk kodu na papierze lub poprzez jakis disasembler...
Disasembler - rozklada program wykonywanlny na kody asmeblera, wraz z podzielaniem
na sekcje, napisy... ciezko to wytlumaczyc... lepiej samemu zobaczyc
czym to sie je... jednymi z najlepszych przedstawicieli tego gatunku sa
IDA i WDasm...
Dongle - tak zwany klucz sprzetowy, jedne z popularniejszych zabezpieczen
programow graicznych/architektonicznych/geodezyjnych, dzialanie
jego polega na wyslaniu do klucza (podpietego pod port LPT 1) i
na podstawie otrzymanej odpowiedzi sprawdzic jego obecnosc/auten-
tycznosc... jedno z najbardziej trudnych zabezpieczen (oczywiscie odpowiednio
uzyty...)
Edytor zasobow - bardzo pozyteczne narzedzie umozliwiajace zmienianie napisow wystepujacych
w programie, wyciaganie rysunkow, ikon itp.
Entry Point - adres pierwszej instrukcji wykonywanej podczas pracy programu...
generic patcher - uniwersalny patch, dzialajacy na kilka wersji programow, za pomoca
wbudowanych mechaniznow znajduje odpowiednia dzialke i ja zmienia...
lepszy od normalnego patch'a jednak trudniejszy w wykonaniu...
HASP - rodzaj klucza sprzetowego, jeden z najlepszych... posiada mechanizmy
skutecznie odstraszajaca wiekszosc potencjalnych piratow..
Keyfile - rodzaj zabezpieczen w programie, polega na tym, ze dla wersji
zarejestrowanej tworzony jest plik, gdzie zapisane sa wszystkie dane
rejestracyjne, lamanie takich zabezpieczen polega na utworzeniu pulapki
na otwarcie tych plikow (CreateFileA ???), i przesledzeniu sposobu
odczytu danych z tych plikow...
Keygenerator - program tworzacy seriale dla podanych przez uzytkownika danych,
inaczej mowiac dziala tak: wpisz kod, a ja podam ci wlasciwy serial
dla twoich danych... wygodne, nieprawdaz???
klucz sprzetowy - patrz dongle
krytografia - czesc dzialu "zabezpieczen", zajumuje sie kodowaniem informacji
czyli tworzeniem takich informacji, aby nie byly mozliwe do odczytania
dla osoby nieprzeznaczonej... ma zastosowania w bardzo wielu
dziedzinach naszego zycia, np. pryz przesylaniu informacji w
Internecie itp.
Loader - program dzialajacy w pamieci komputera, sluzyc ma zmienianiu
kodow instrukcji w pamieci, najczesciej uzywany, kiedy program
jest spakowany, a ze wzgledow techniczncyh nie mozna go rozpa-
kowac
Member - czlonek jakiejs grupy, czy to crackerskiej, hackerskiej czy innej,
np. CrackPl, Cookiecrk,
Nagscreen - rodzaj uprzykrzacza, z reguly jest to okienko informujace o
niezarejstrowanym programie
Opkod - kod instrukcji asemblera wyrazony w kodach hex'owych, potrzebne jest
to przy zmienianiu na stale plikow exe, dll, aby znalesc kod hexowe
poszczegolnych instrukcji najlepiej uzyc SoftIce z wlaczona opcja
Code (tzn. Code ON).
Patch - doslownie nakladka, najczesciej na jakis dany program umozliwiajaca
wykorzystywanie go NIEZGODNIE z prawami autorskimi
PE - naglowek plikow wykonywalnych, znajduje sie w nim glowne centrum
sterowania, np. adresy sekcji, itp.
reverse enginering - jasniejsza ?! strona naszej dzialanosci, polega na sledzeniu
wykonywania czegokolwiek, zrozumienia tego i (ewentualnie) odwrocenia...
Ring0 - tryb ochorony systemu Windows
Sekcja - czesc naglowka pliku exe,dll zawierajaca np. deklaracje zmiennych itp.
kilka podstawowych sekcji: data, code, text itp.
Self-modyfing kod - w wolnym tlumaczeniu "Samo modyfikujacy sie kod..." i taka wlasnie
spelnia funkcje... poprzez ustawienie atrybutow sekcji Code mozna
robic takie cuda, trick bardzo chetnie wykorzystywany we wszystkich
rodzajach crackme, a takze przy pakerach plikow wyoknywalnych.
Sentinel - kolejny rodzaj klucza sprzetowego
time-limit - zabezpieczenie czasowe, program dziala tylko przez jakis
okreslony czas
tutorial - tekst napisany od crack'era dla crack'era, ma za zadanie przekazac jakas
wiedze, np. jak zabic swinke, czy zlamac patyk...
unpaker - program neutralizujcy (rozpakowujacy) pliki spakowane, jakims
pakerem najczesciej unpacker taki jest napisany pod konkretny paker -
dziala tylko na okreslony , choc sa tez uniwersalne takie jak
np. ProcDump
WideChar - format zapisu danych charakterstyczny dla programow pisanych w Visual'u...,
powstal on na bazie formatu Unicode... na czym to polega??? tekst jest
zapisywany z... przerwami, czyli np. TepeX wyglada T e p e X, gdzie pomiedzy
danymi znajduje sie bajt zero, do zapisu tak danych uzywa sie funkcji
MultiByteToWideChar.
Wyjatek - moment pracy programu/systemu, podczas ktorego nastepuje blad, tzw. wyjatek
krytyczny, uzytkownikom systemu Windows moze sie to kojarzyc z takim ladnym
... niebieskim ekranem, aby zaradzic takim przypadkom istnieje specjalna
funkcja do obslugi wyjatkow, zwie sie... SetUnhandledExceptionFilter, poniekad
sluzaca jako technika anty-debug... wyjatki mozna obslugiwac takze SoftIce'm
poprzez ustawienie opcji Faults na On.
8. Spis podstawowych narzedzi wraz z krotkim opisem.
Aspack - kolejny packer plikow wykonywalnych, jak zwykle .... :)
Customiser - kolejny uzyteczny program, pokazuje hwnd i inne badziewie
okna, umozliwia wykonywanie na nich wszystkich operacji
(wlacznie z uaktywnieniem przycisku/okna, pokazeniem, schowaniem)
IDA - bardzo dobry disasembler, niestety ciezki ( kilkanascie
mg), jednak o wiele lepszy od WDasm'a...
ICEDUMP - dodatek do SoftIce, umozliwia zruczanie pamieci do pliku
(z mala pomoca ProcDumpa) oraz sluchania ulubionego mp3
podczas lamania
ExeSpy - program rozpoznajcy czym spakowany jest dany plik (chodzi o pakery plikow
wykonywalnych exe,dll)
FileMonitor - analogicznie jak RegMonitor, tyle ze sluzy do plikow
Frog's Ice - niezwykle uzyteczny program do zabezpieczenia SoftIe przed
wykryciem, w niektorych przypadkach nieskuteczny
Hiew - hex edytor, calkiem ladny i przyjemny, niestety/stety shareware
LoneWolf - polski zbior crackow, seriali i keygeneratorow, pomysl i wykonanie Imaginative
Masm - kompilator asmeblera, umozliwia tworzenie programow Windowsowych (oknowych)
Neolite - paker plikow wykonywalnych
PePack - paker plikow wykonywalnych
ProcDump - najlepszy unpacker do spakowanych plikow (made by Stone
and G-Rom ), przy okazji edytor Pe, process dumper i wiele innych
pozytywnych rzeczy...
RegMonitor - swietny program, pokazuje odwolania do rejestru,
SafeDisk - program zabezpieczajacy plyty CD przed kopiowaniem
tworzy unikalny numer seryjny, ktory nie jest kopiowany
przez nagrywarki
Shareware Cracker - zbior crack'ow by Profit
Shrinker - paker plikow wykonywalnych
Sicetool - program sluzacy do zabezpieczania SoftIce przed wykryciem... obsluguje
tylko wersje 3.22 i 3.23... ale warto... bardzo pomaga...
SmartCheck - niezastapione narzedzie do walki z programami napisanymi
w Visual Basic'u
SoftIce - jeden z najlepszy debuger'ow. Od wersji 3.0 jest pod
windows'a. Naucz sie go dobrze - jest niezastapiony.
Symbol Loader - centralna czasc SoftIce, sluzy do uruchamiania programow
w SoftIce
Tasm - kompilator asmeblera
TRW - debuger A'la Softice... doslownie niemal identyczny... odpowiednio
zmieniony jest identyczny jak on... stworzony przez nie jakiego LiuTa...
cos tam z Chin... pomaga tam, gdzie... Softice jest wykrywany... posiada
jedna ciekawa ceche... mozna go zaloczyc/wylaczyc w dowolnym momencie...
np. po wlaczeniu programu :)))
W32Dasm - najczesciej uzywany disasembler and debuger,
pomoze ci gdy SoftIce zawiedzie
UPX - paker plikow wykonywalnych
9. Screen ( :))) ) z SoftIce wraz z krotkim opisem co i jak...
* EAX=00001607 EBX=C35E0018 ECX=00000000 EDX=13440010 ESI=00000097
* EDI=00002816 EBP=00000000 ESP=0000023A EIP=00004758 o d I s z a P c
* CS=FF34 DS=9C0E SS=1551 ES=1551 FS=0000 GS=0000
------------------------------------------------------------------------V86-----
+ FF34:4756 7405 JZ 475D
+ FF34:4758 EA05007000 JMP 0070:0005
+ FF34:475D 1E PUSH DS
+ FF34:475E 2E8E1E273F MOV DS,CS:[3F27]
+ FF34:4763 3C06 CMP AL,06
+ FF34:4765 7502 JNZ 4769
+ FF34:4767 EB49 JMP 47B2
+ FF34:4769 3C07 CMP AL,07
+ FF34:476B 7502 JNZ 476F
+ FF34:476D EB57 JMP 47C6
^ ------------------------------------CDMAX+0234----------------------------------
' WINICE: Free32 Obj=01 Mod= NETBIOS
' WINICE: Free32 Obj=02 Mod= NETBIOS
' WINICE: Free32 Obj=03 Mod= NETBIOS
' WINICE: Free32 Obj=04 Mod= NETBIOS
' WINICE: Free32 Obj=05 Mod= NETBIOS
' WINICE: Free32 Obj=06 Mod= NETBIOS
' :pagein n darek.txt
W sekcji * (gwiazdek... hehe...) mamy po koleji wypisane wszystkie rejestry procesora wraz z
ich obecnymi hexymendalnymi wartosciami... Na koncu tej sekcji znaduje sie takze rejestr znacznikow procesora (mala litera oznacza ze ma wartosc 0 [zero] a duza ze 1 )
W sekcji + mamy podane aktualnie wykonywane komendy progamu/komputera :((( wraz z adresami po lewej stronie...
W sekcji ^ mamy podana nazwe programu w ktorej sie aktualnie znajdujemy... pomaga nam to zorietnowac sie gdzie jestesmy...
W sekcji ' wyswietlane sa komendy wpisywane przez nas... oraz rozne "notatki" SoftIca o zdarzeniach w komputerza... nierzadko bardzo pozyteczne...
II Programing
1. Asmebler
1.01 Komendy...
1.01.01 Opis instrukcji "XOR"
XOR jest instrukcja artymetyczna wykonujaca operacje na bitach w/g pewnej reguly...
Przy xor'rze mamy zawsze dwie wartosci, A i B... np. xor EAX, EBX... wynik operacji zapisywany jest w pierwszym operandzie (w tym przypadku EAX), wynik... no wlasnie jaki wynik??? XOR po koleji bierze po jednym bicie z kazdego operandu i przerabia je w/g
schematu (a - pierwsza wartosc, b - druga wartosc, c - wynik operacji...):
a | b | c
---------
1 | 1 | 0
0 | 1 | 1
1 | 0 | 1
0 | 0 | 0
Wypadalo by w tym miejscu wspomniec o pewnej wlasciwosci tej funkcji... XOR wykonany dwa razy na tych samych argumentach da nam z powrotem dane wyjsciowe! Wlasnie z tego powou, ta funkcja czesto wykorzystywana jest w procedurach kodujacych...
A oto przyklad:
eax=22222222 ebx=11111111
1010100110001010110001110 101010011000101011000111
xor eax, ebx
1010100110001010110001110 EAX
0101010011000101011000111 EBX
-------------------------
1111110101001111101001001 Wynik w EAX
Zwroci w rejestrze EAX wartosc: 33201993... (WARTOSCI DECYMENDLANE!!!)
1.01.02 Opis instrukcji "ROR" i "ROL"
ROL i ROR sa to instrukrcje 'obracajace' bity... ROL w lewo, a ROR w prawo. Najlepiej zobaczyc to na przykladzie... ROL i ROR maja wywolanie : ROL rejestr, ilosc_miejsc_przesuniecia (gdzie ilosc jest podana w hexach...).
Mamy wiec np. ROL EAX,03, gdzie EAX ma wartosc 32323232 (HEXOWO!!!) na bity to bedzie:
110010001100100011001000110010 rol obraca w lewo o 3 miejsca, a wiec mamy:
- I przesuniecie 100100011001000110010001100101
- II przesuniecie 001000110010001100100011001011
- III przesuniecie 010001100100011001000110010110
ROL - scinamy bity z lewej strony i przenosimy na prawo...
ROR - na odwrot...
Jak widzisz ROL i ROR sa przeciwstawne wiec mozna do rozkodowania uzyc po prostu przeciwnej instrukcji z tym samym operandem i ta sama wartoscia przesuniec... :))))
1.01.03 Opis instrukcji "SHL" i "SHR"
Instrukcje SHL i SHR sa bardzo podobne jak funckje powyzsze (ROL i ROR) z mala roznica... ale pierw zobaczmy przyklad:
EAX - ma 32323232 - 110010001100100011001000110010
SHL EAX,02
W EAX otrzymujemy C8C8C8C8 - 11001000110010001100100011001000... zobacz co sie stalo... do liczby zostaly dopisane dwa!!! bajty z prawej strony... takie jest wlasnie dzialanie SHL i SHR dopisuja dwa puste bajty... lecz uwaga w momecie gdy zostanie przekr
oczona wartosc rejestru (w tym przyadku gdy bedzie mial dlugosc 32 bitow) procesor obetnie najsarsze bity... ktore to sa??? te przeciwne do strony do ktorej dodajemy... Mamy przyklad taki jak u gory z tym ze tym razem przesuwamy caly ten kram o 12 znakow.czyli otrzymujemy cos takiego.... 110010001100100011001000110010000000000000
ale z powodu ograniczenia rejstru scinamy stare bajty i mamy: 0100011001000110010000000000000
Aha, najlepiej do tego typu obliczen uzywaj kalkulatora WinShit'a w opcji zaawansowanej...
1.01.04 Opis komendy "cmp".
Wywolanie: cmp wartosc,wartosc
Dzialanie: funkcja porownuje dwie wartosci... wynik zapisuje w flagach...
Zmiany flag: A ,C ,O ,P ,S ,Z
1.01.05 Opis komendy "mov".
Wywolanie: mov wartosc#1,wartosc#2
Dzialanie: funkcja przenosi dana podana jako drugi parametr do pierwszego parametru...
Zmiany flag: brak
1.01.06 Opis komendy "add".
Wywolanie: add rejestr#1,wartosc#2
Dzialanie: funkcja dodaje do pierwszego operandu wartosc podana w drugim parametrze...
Zmiany flag: A, C, O, P, S, Z
1.01.07 Opis komendy "sub".
Wywolanie: sub rejestr#1,wartosc#2
Dzialanie: funkcja odejmuj od pierwszego operandu wartosc podana w drugim parametrze...
Zmiany flag: A, C, O, P, S, Z
1.01.08 Opis komendy "call".
Wywolanie: call funkcja
Dzialanie: komenda ta wywoluje funkcje o nazwie podanej w parametrze, jednoczescie odklada
ona na stos adres aktualnej instrukcji...
Zmiany flag: brak
1.01.09 Opis komendy "ret".
Wywolanie: ret
Dzialanie: komenda ta oznamnia koniec call'u i powoduje przejscie do nastepnej instrukcji za
call'em... choc nie
Zmiany flag: A, C, O, P, S, Z
1.01.0A Opis komendy "push " oraz "pop".
Wywolanie: push wartosc/rejestr pop wartosc/rejestr
Dzialanie: push kladzie jakas dana na stos, natomiast pop ja zdejmuje... kiedy zostanie
wykonana komenda push rejestr SP zostaje zwiekszony o 2 (lub 4) a do SS:SP leci
dana wartosc... natomiast pop zmniejsza reejstr SP o 2 (4) i wtedy SS:Sp wskazuje
na wartosc poprzednia... najlepiej zobacz to sobie jak to program robi...
Zmiany flag: brak
1.01.0B Opis komendy "test".
Wywolanie: test wartosc,wartosc
Dzialanie: wykonanie tej komendy spowodoju ze komputer wykona operacje logiczna AND na dwoch
wartosciach i wynik zapisze w rejestrze znacznikow...
Zmiany flag: C, O, P, S, Z (A nie zdefioniowana)
1.01.0C Opis komendy "inc" i "dec".
Wywolanie: inc rejestr dec rejestr
Dzialanie: komenda inc inkrementuje, czyli zwieksza o jeden dana wartosc, natomiast komenda
dec dana wartosc zmniejsza o jeden...
Zmiany flag: A, O, P, S, Z
1.01.0D Opis komendy "repne" i jej odmian.
Wywolanie: repne i inne...
Dzialanie: dzialanie wszytkich tych komend troche sie rozni... ale w wszytkie inne daza do
jednego... porownaja dana z rejstru ESI z dana z rejestru EDI... zmieniajac przy
tym pare rzeczy... w tym np. rejestr CX...
Zmiany flag: brak
1.02 Co znaczy porownanie Test EAX,EAX?
Komenda Test porownuje wartosci w rejestrach podanych jako jej parametry... na podstawie wyniku
ustawiane sa odpowiednio znaczniki... Ale jakie to ma zastosowanie w zabezpieczeniach... na pewno wiele razy spotkales taki kawalek kodu:
call cos_tam
test eax,eax
jz zle_haslo
W takim wypadku wydaje sie ze zawsze jest wynik pozytywny... bo jak dwie te same wartosci moga miec rozne wartosci??? Ale wbrew pozora... zaglebnijmy sie w dzialanie tej funkcji... a wiec... funkcja Test przeprowadza (w celu weryfikacji) operacje AND na
dwoch argumentach... a co robi funkcja AND??? zobacz w tabelce jak zmieniaja sie bity:
a | b | c
---------
1 | 1 | 1
0 | 1 | 0
1 | 0 | 0
0 | 0 | 0
Przenalizujmy sytuacje dla EAX rownego 00000000 w wyniku operacji AND na dwoch argumentach zerowych zostanie zwrocene w wyniku jej dzialania 00000000 (patrz tabelka) i z tego powodu flaga Z zostanie ustawiona...
Jesli natomiast wezmiemy EAX rozne od zera np. 00000101 wtedy AND zwroci wartosc 00000101 i flaga Z nie zostanie ustawiona...
Widzisz juz dzialanie tej funkcji??? jest to jakby porownanie czy w EAX jest zero...
A znaczenie tego w kodowaniu??? Jesli wejdziesz w call'a zobaczysz czesto taki kawalek kodu:
cmp eax,ebx
jz dobrze
xor eax,eax
dobrze: ret
Kapujesz??? Nie wiem jak to prosciej wytlumaczyc... :((((
1.03 Co to sa flagi, do czego sluza i jakie jest ich znaczenie?
Flagi sa to jakby osobne rejstry procesora sluzace do... no wlasnie czego... najlepije zobaczyc to na przykladzie, mamy np. kawalek kodu:
cmp eax,ebx
jz dobry_kod
Przeanalizuj to... cmp porownuje dwie wartosci... a wynik porownania... no wlasnie gdzie jest wynik porownania??? w rejestrze znacznikow... zaleznie od wyniku dzialania tej komendy komputer odpowiednio ustawi znaczniki, ktore potem posluza jako (wy)znacznW skrocie mozna zapisac ich dzialanie tak: "sluza do kierowania wynokaniem lub nie wykonaniem skokow warunkowych etc."...
W obecnych komputerach mamy takie rodzaje flag: o d i s z a p c...
2. Spis funkcji API, dla: (czesc funkcji ma swoje 16 biotwe odpowiedniki, bez A na koncu...)
2.01 Pobrania tekstu i operacji na nim...
Pobranie:
GetDlgItemTextA
GetWindowTextA
Hmemcpy (dosc uniwersalna funkcja... wywolywana bardzo czasto wiec uwazaj...)
Operacje:
lsctrcmp - porownanie...
CharUpperA - zamiana tekstu na duze litery...
CharLowerA - zamiana na male litery...
2.02 Wyswietlania okien...
MessageBoxA - zwykly messagebox...
CreateWindowExA - normalne okno...
DialogBoxParamA - cos pomiedzy Messagem a Oknem...
ShowWindow - do pokazania okna na pulpicie...
2.03 Dla czasu...
GetSystemTimeA
GetLocalTimeA
2.04 Dla programow pisanych w Visual Basic'u...
__vbastrcmp - porownanie napisow...
__vbastrcomp - jak wyzej
__vbastrmove - przenoszenie napisow
MultiByteToWideChar - zamiana tekstu na format Wide
WideCharToMultiByte - przeciwna do powyzszej...
rtcMsg - do messgaebox'a
rtcBeep - pisk :)
rtcGetPresentDate - pobranie daty...
2.05 Dla rejestru...
OpenKey - otwiera klucz
RegOpenKey - jak wyzej...
CloseKey - zamyka klucz
RegCloseKey - jak wyzej...
RegQueryValueExA - pobranie wartosci
RegSetValueExA - ustawienie wartosci
2.06 Dla innych rzeczy...
CreateFileA - utworzenie pliku
ReadFile - odczyt pliku
GetDriveTypeA - pobranie typu dysku (stosowane przy CD-Chekach...)
III Rozne dodatki i takie tam...
1. Tabela kodow ASCII (tylko normalne znaki... bo inaczej by krzaki bylo)
wartosci hexowe... co by nie bylo za latwo...
__________________ _________________
| wartosc | znak | | wartosc | znak |
|_________|________| |_________|_______|
| 20 | spacja | | 50 | P |
| 21 | ! | | 51 | Q |
| 22 | " | | 52 | R |
| 23 | # | | 53 | S |
| 24 | $ | | 54 | T |
| 25 | % | | 55 | U |
| 26 | & | | 56 | V |
| 27 | ' | | 57 | W |
| 28 | ( | | 58 | X |
| 29 | ) | | 59 | Y |
| 2A | * | | 5A | Z |
| 2B | + | | 5B | [ |
| 2C | , | | 5C | \ |
| 2D | - | | 5D | ] |
| 2E | . | | 5E | ^ |
| 2F | / | | 5F | _ |
| 30 | 0 | | 60 | ` |
| 31 | 1 | | 61 | a |
| 32 | 2 | | 62 | b |
| 33 | 3 | | 63 | c |
| 34 | 4 | | 64 | d |
| 35 | 5 | | 65 | e |
| 36 | 6 | | 66 | f |
| 37 | 7 | | 67 | g |
| 38 | 8 | | 68 | h |
| 39 | 9 | | 69 | i |
| 3A | : | | 6A | j |
| 3B |; | | 6B | k |
| 3C | < | | 6C | l |
| 3D | = | | 6D | m |
| 3E | > | | 6E | n |
| 3F | ? | | 6F | o |
| 40 | @ | | 70 | p |
| 41 | A | | 70 | q |
| 42 | B | | 70 | r |
| 43 | C | | 70 | s |
| 44 | D | | 70 | t |
| 45 | E | | 70 | u |
| 46 | F | | 70 | v |
| 47 | G | | 70 | w |
| 48 | H | | 70 | y |
| 49 | J | | 70 | z |
| 4A | K | | 70 | { |
| 4B | L | | 70 | | |
| 4C | M | | 70 | } |
| 4D | N | | 70 | ~ |
| 4E | O | |_________|_______|
| 4F | P |
|_________|________|
2. Zbior link'ow do wielu stron o crack'u, asemblerze itp.
2.03 Strony o kryptografii...
Jako ze moglem wypisac tutaj setki linkow, a chcac oszczedzic cenne Kb (i niektorym tusz do
drukarek :((( ) to podam jeden glowny :
neworder.box.sk - jak tam wejdzesz wybierasz dzial Cryptografy i masz dostep do likuset linkow... a potem juz tylko po sznurkach...
FF. Slowo koncowe i podziekowania
Wypadaloby w tym miejscu podziekowac wszystkim tym, ktorzy przyczynili sie
do powstania tego FAQ-u. Sa wsrod nich osoby, ktore zadawaly pytania oraz osoby
ktore na nie odpowiadaly. Dziekuje przede wszystkim zalozycielom listy
crackpl-forum, gdyz wiekszosc pytan pochodzi wlasnie z niej... tak samo
jak niektore odpowiedzi. A oto lista specjalnie wyroznionych: Imaginative,
mNICH,GustawKit, tato, Zomo... (lista jest ciagle otwarta... niestety wypadl z niej
jeden gostek... jaki??? porownaj z poprzednia wersja :) )...
Mam nadzieje, ze ten FAQ pomogl ci w jakiekolwiek sposob. Na pewno po jego
lekturze masz pare uwag na jego temat, cos ci sie podoba (???), cos cie
zdenerwowalo etc. wiec jesli chcesz podziel sie ze mna swoimi uwagami, pisz
na adres: zhrbytom@friko.internet.pl...
Download bez limitów
Wiekszosc takich rzeczy jest w sieci ale po angielsku, albo ciezko znalezc, dzieki!.