----------
Pierwsze od czego zaczn ten temat, to od tego, kim jest osoba nazywajca si "cracker".
Niektrym kojarzy si to sowo z cracker-hacker, lecz tak nie jest (i dobrze)
Niektrzy myl, e cracker to taki kto, kto tylko pisze cracki, w tym nie ma za duo racji, lecz cracker rzeczywicie moe pisa cracki do rnych aplikacji. Pisze to po to, eby wbi ludziom czytajcym ten artyku do gowy, e cracker =! hacker.
W mojej definicji, cracker to osoba :

- inteligentna (ma pojcie o komputerach)
- znajca chocia podstawy assemblera
- potrafica programowa w jakim jzyku programowania
- potrafica zmienia kod programu, znajdowa inne potrzebne rzeczy

Czyli inaczej mwic i prociej, cracker to osoba, ktra amie zabezpieczenia programu i go modyfikuje w jaki sposb aby osign odpowiedni efekt.

Nie ba si, my tu nie bdziemy ama prawa, ani nic z tych rzeczy. W moich kursach, bdziemy tylko modyfikowa przez nas stworzone programy & crackme'sy.
----------
Druga rzecz, to pytanie, jak zacz przygod z crackingiem ?
Rzeczy, ktre bd nam potrzebne do przygody z crackingiem :

- mzg
- internet
- zna assemblera, choby w podstawowym stopniu

Gdy si upewnilicie, e te cechy posiadacie, trzeba posi odpowiednie narzdzia.


- Debugger np. OllyDebugger lub SoftIce
- Disassembler np. IDA, W32DASM
- RegMon, FileMon i inne monitory
- kompilator asma (MASM, TASM, itp.)
----------
Kilka poj :

Pierwsze od czego zaczn, to od :

Sposb zapisu (hex, dec, itp.) - moe uczye si o tym w szkole, ale powiem to. Istniej takie trzy gwne rodzaje zapisu cyfr :
- binarny - kady bit moe przyjmowa warto 1 lub 0
- decymendalny - po prostu system dziesitkowy
- hexymendalny - wyraany przez cyfry & litery

Rejestry procesora - procesor, posiada tzw. rejestry (chyba wiesz co to rejestr, nie?).
Procesor posiada 9 gwnych rejestrw, a s to :
- eax, ebx, ecx, edx, edi, esi, ebp, esp & eip
Wszystkie te rejestry co wymieniem u gry s 32 bitowe, czyli zbudowany z dwch 16 bitowych czci. Nastpnie te 16 bitowe rejestry dziel si na kolejne 8 bitowe(np. AX dzieli si na AH, AL). S rwnie inne rejestry, np. znacznikw (d o i z s a c p), ktre mog mie warto 0 lub 1 (inaczej nazywane rejestry znacznikw - flagi procesora). Przechowuj one chwilowe informacje w twoim kodzie (xor, sub, itp).

Jzyk maszynowy - jak kady wie, kod rdowy podczas kompilacji jest przeksztacany w kod maszynowy, zrozumiay dla komputera. Bdziemy takie kody rdowe podglda za pomoc rnych narzdzi (disassembler, debugger).
----------
Opisze wam teraz obsug disassemblera W32DASM.
----------
W32DASM nie posiada jaki super extra funkcji, jeli znasz angielski, to nawet nie musz tu nic opisywa, no ale jeli kto nie zna..

Zakadka disassembler :

Open file to disassemble - otwrz plik do disassemblacji
Save disassembly - zapisywanie zdisassemblowanego pliku
Print preview - podgld wydruku
Print - drukuj
Print setup - ustawienia drukowania
Copy selected line - kopiuje zaznaczon lini do schowka
Font - czcionka
Clear All Trade Marks - usu zaznaczenia (wszystkie)
Disassembler Options - ustaw tam wszystko na "enable"

Zakadka project :

Open Project File - otwiera zdisassemblowany plik (wczeniej ...)

Debug :
Load process - wczytaj proces
Attach to an active process - wczytaj aktywny proces
Breakpoint toggle - ustawienie breakpointa
Run process - debugguj
Pause process - przesta debuggowa
Goto current eip - skocz do aktualnego eip
Terminate process - wycz proces
Debugger options - opcje debuggera (wcz wszystko na "enable")

Podaem wyej tylko te przydatniejsze opcje..

Zakadka Search :

Find text - znajd tekst
Find next - znajd nastpny

Zakadka Goto :
Goto Code Start - id na pocztek kodu rdowego programu
Goto program entry point - idzie na pocztek kodu, tam gdzie program zaczyna wykonywa dziaanie
Goto page - idzie na zadan stron
Goto code location - idzie pod konkretny Virual Address

Zakadka Execute :

Execute jump - wykonuje skok
Return From Last Jump - wraca do miejsca skd nastpi skok
Execute call - wykonuje call'a
Return From Last Call - tak samo jak skok tylko call

Zakadka Functions :

Imports - lista importw
Exports - lista exportw

Zakadka Heata

Hex Display of Code Data - wywietla zadany segment (hex)
Hex Display of Code - wywietla zadany kawaek kodu (hex)

Zakadka Refs :

Menu References - odniesienia do menu zdisassemblowanego programu
Dialog References - odniesienia do okienek
String Data References - odniesienia do acuchw tekstowych ("stringw")

Zakadka Help :

Tego nie trzeba tumaczy
----------
No dobra, co z tego jeli wam przetumacze menu jak i tak nic nie bdziemy robi? Disassemblujemy pierwszy przykad programu.
----------
Dobra, nabazgrajcie jaki program w byle jakim jzyku programowania, np. C++, proste hello world.
Kod:
#include <iostream>

#include <conio.h>



using namespace std;



int main()

{



cout <<"Hello World!" << endl;

getch();



}
Dobra, skompilujcie to. Przykadowo, nasz program hello world, jest spakowany jakim packerem i nie moemy go otworzy przez W32DASM, co zrobi? cigamy analizator plikw (moe by PEID) i otwieramy nim nasz spakowany program, dowiadujemy si co to za packer/cryptor i szukamy unpackera/decryptora. Jeli plik nie jest spakowany, miao moemy go otworzy poprzez W32DASM (Disassembler > Open File to disassemble i wybieramy plik .EXE). Po zaadowaniu programu, ukae nam si pikny listing naszego programu (no mi akurat nie, bo trzeba zmieni czasami czcionk, bo wyskocz same kwadraty i inne badziewia). Skoro ju wszystko wiemy, omwmy tabel importw i exportw. W menu w zakadce Functions mamy co takiego jak Import & Export. Klikamy na Import (export jest bodaje nie aktywne). Poszukajmy teraz funkcji, ktra wywietla nasz tekst Hello World poprzez cout. Gdy j ju znajdziecie, kliknijcie dwa razy, a disassembler przeniesie was w odpowiednie miejsce w listingu, gdzie ta funkcja jest wywoywana przez program. Wanie do tego suy tabela importw & exportw.
Teraz druga sprawa, podzia programu na sekcje.
Jeli przejdziecie na sam gr listingu, powinnimy ujrze co takiego :

Kod:
Numer of objects = 0005(dec), Imagebase = 00400000h

Object01: .text****RVA: 00001000 Offset: 00000400 Size: 0003DA00 Flags: 60000060

Object02: .data****RVA: 0003F000 Offset: 0003DE00 Size: 00000200 Flags: C0000040

Object03: .rdata** RVA: 00040000 Offset: 0003E000 Size: 00002800 Flags: 40000040

Object04: .bss**** RVA: 00043000 Offset: 00000000 Size: 00000000 Flags: C0000080

Object05: .idata** RVA: 00048000 Offset: 00040800 Size: 00000800 Flags: C0000040
S to sekcje. Jak widzimy, program jest podzielony na kilka sekcji w ktrych znajduj si rne informacje.

ObjectXX - gdzie XX to numer, np. 01, jest to numer sekcji
RVA - Wirtualny adres gdzie zaczyna si sekcja
Offset - offset w pliku, gdzie rozpoczyna si sekcja
Size - rozmiar sekcji
Flags - charakterystyka sekcji
----------
Jeli chcesz zobaczy kilka przydatnych skokw & porwna, ktre musisz umie, zobacz :
ownersite.republika.pl/Skoki_i_porwnania_-_asm.rar
----------
Jak bd mia znowu czas, napisz dalsze czci artykuu.
Mam nadzieje, e to co tu napisaem si komu przydao..