Cracking 4 newbies
Knížku máte tady, ale pokud chcete, je ke stáhnutí i ve formátu PDF zde .
Knížka je stará, proto jsou některé odkazy nefunkční.
Jelikož na českém internetu je toho o Reverse
Engineeringu málo, napadlo mě udělat miniknížku ve
formátu A5 o crackingu. Knížka je psaná v Microsoft
Wordu 2oo7, ve formátu A5, a soubor má formát buď
.doc nebo .pdf. Knížka je určená ke čtení na PC, ale
samozřejmě si ji můžete i vytisknout. Vejdou se vám
2 listy na 1 list papíru A4, proto je psaná ve
formátu A5, aby byla menší.
Tolik k teorii. Jak již jsem uvedl, na českých
stránkách je hodně málo stránek o Reverse
Engineeringu (dále jen RE, Rev. Eng. = Cracking),
nejlepší ze stránek jsou asi picaso.poupe.net a
www.t4c.ic.cz. Stránky už nejsou bohužel
aktualizovány a na českých stránkách jsem vyloženě
dobrou stránku o crackingu nenašel. Proto se snažím
RE uvést znovu do provozu.
Dnešní aplikace, programy a hry jsou velmi
kvalitně chráněny, ale „vždycky všechno jde“. Podle
mého názoru je „lepší“ si zvolit cestu crackingu,
než hackingu, protože u crackingu se jedná o kód,
který je na našem počítači, a jde vždycky upravit,
zatímco u hackingu „nikdy nevíte“…
Do RE se nemůžete pouštět jen tak. Musíte být
aspoň průměrný programátor v Assembleru, a porozumět
jednotlivým instrukcím. Předem říkám, že jsem
začátečník, a proto promiňte některé nepřesné
výrazy. Potom musíte mít určitou softwarovou výbavu.
Ze základních patří tyto programy:
Olly Debugger (OllyDbg) – Toto je vynikající
freewarový debugger, zobrazí vám jednotlivé
instrukce v assembleru, můžete se podívat do paměti
RAM, měnit flagy a měnit procesorové registry. Má
komfortnější ovládání než SoftICE (viz níže) a proto
pracuji právě v OllyDbg.
SoftIce – Debugger od společnosti Numega. Crackeři
uvádějí, že je to jejich nejoblíbenější firma. Tento
debugger je placený a pracuje v DOSovském prostředí.
Má sice více možností než Olly, ale mě Olly vyhovuje
více. Popravdě řečeno jsem tenhle debugger
nainstaloval, jednou použil, a potom hned smazal…
DeDe – Delphi Decompiler. Dekompiluje vám aplikaci
vytvořenou v Delphi, můžete se dívat na jednotlivé
Formy, a procedury. *.pas soubor vám sice
nevykouzlí, místo toho se vám objeví asm instrukce i
s adresami.
IDA – Interactive DisAssembler, je to nejlepší
DisAssembler (dále jen Dasm) vůbec. Je ale placený a
složitý na ovládání. Ale na prohlídnutí asm kódu
postačí. Navíc ukáže graf posloupnosti programu. Já
osobně IDu nepoužívám, moc mi nevyhovuje, ale
jednou za čas si v tomto Dasmu disassemblluju
program.
W32Dasm – Výborný freewarový Dasm. Používám ho
raději než IDu a umí jednu skvělou věc co IDA neumí,
a to je vyhledávání stringů v jednotlivých částech
kódu…
PEiD – Freewarový program, který zjistí, čím je
program zkompilován, popřípadě zapakován nebo
kryptován. Při Generic unpacker a UPX unpacker pluginu,
dokáže program i rozpakovat.
eXeScope – Tento program snad používám jenom já.
Zobrazuje hlavičku exe souboru, importované a
exportované funkce a resources. Popravdě řečeno,
tímhle programem začínám vždycky crackovat.
PEditor – Editor hlaviček v exe souboru. Většinou
zde měním characteristics sections. Při špatně
nastavené sekci, nejde program načíst třeba do
W32Dasmu. Nebo při kompresi UPX a vymazaných jménech
sections, je zde doplním. NEŽ JAKÝKOLIV PROGRAM
BUDETE CHTÍT UPRAVIT, ZÁLOHUJTE HO!!!
UPX – Ultimate Packer for eXecutables. Program
zkomprimuje exe soubor (exe, dll, ocx a další PE
soubory…). Program umí i dekomprimovat. Po
zkomprimování a vymazání jmen sekcí a upravených
characteristics, už nejde program normálně
unpacknout pomocí UPX. Musí se sekce zpět přepsat,
dumpnout, nebo genericky unpacknout.
ProcDump – Program programovaný v MASM assembleru.
Dokáže dumpnout program z paměti RAM. Předem
upozorňuji, že program takto dumpnutý většinou
nefunguje, hlasí různé chyby a kód nedává smysl.
Program dále umí rozpackovat exe pomocí asi 40ti
unpackerů. Má v sobě i integrovaný editor hlaviček.
existuje program Hiew ale ten já nepoužívám, není
proč.
Jak již jsem napsal, musíte umět aspoň základy
assembleru. Nemusíte v něm nutně umět programovat
(to neumím ani já, tedy…jen základy, nic moc extra),
ale musíte rozumět jednotlivým instrukcím. Za chvíli
je vypíšu…
K zahození nebude ani znalost jazyka C++, nebo
Delphi (Pascal). V céčku si naprogramujeme patchy a
cracky, a v Delphi si zkusíme naprogramovat
jednoduché CrackMe (dále jen CMe). CrackMe je
vlastně program, který je speciálně určený pro
cracknutí.
Zde je slibovaný popis instrukcí:
CMP EAX, EBX – porovná registr EAX s EBX (samozřejmě
může i jiné), pokud se sobě rovnají, nastaví zero
flag na jedničku
JMP 004010F5 – Jump, skok na adresu (v tomto
případě: 004010F5)
JE 004010F5 – Jestli je Zero-Flag (dále jen ZF)
nastaven na 1, skoč…jestli je ZF=0, tak pokračuj…
JNZ 004010F5 – Úplný opak toho předchozího. Tedy:
Jestli je ZF nastaven na 0, skoč…jestli je ZF=1, tak
pokračuj…
něco jako „goto“, můžete tuto instrukci v debuggeru
přeskočit „F8“ nebo „jít do callu“ (trace into),
tlačítkem „F7“
NOP – NO OPeration, žádná operace…tento příkaz je
zkrátka zbytečný, ale i přes to je to jeden z
nejdůležitějších příkazů
PUSH EAX – Uloží eax do stacku (zásobníku)
POP EAX – Pushnutý registr obnoví ze stacku
(zásobníku)
RETN – pokud vstoupíte do CALLu, tak RETN (return)
vrací zpět program na adresu, odkud call pocházel.
Jednoduše je to ukončení CALLu.
XOR – početní operace, zapněte si kalkulačku ve
Windows, nastavte ji na „Vědecký“ mód, a operaci XOR
tam taky máte. Kalkulačka s Poznámkovým blokem jsou
taky vlastně aplikace, které budete s crackingem
potřebovat…
...více v knížce, která je ke stáhnutí i ve formátu PDF zde .