Continut:
Structura unui exe-cutabil..
Dezasambloare-Debuggere..
Hexeditoare..
Unpack-ere..
Patchers..
Alte utilitare..
Bun-venit in lumea crackerilor!! :)
--------------------------------------------------------------------------------
Well oameni buni....
daca ati ajuns sa cititi aceste randuri inseamna ca sunteti interesati
intr-o oarecare masura de spartul programelor.
Toata lumea are o
idee despre ceea ce inseamna freeware , shareware...programe ce le gasim
pe Cd-urile revistelor lunare (care pe la noi sunt cam putine) si care
sunt perzentate spre evaluare. Toti cred ca au trecut printr-un moment
in care am spus "mai sa fie programul asta era asa de misto si acum
nu-l mai pot utiliza ca s-au dus 30 de zile".
Eh eh eh... eeeeiii
a venit momentul sa dam de cap programelor astora care trebuie sa faca
ce vrea Muschii Nostri, nu ce le-au pus programatorii sa faca ..si pentru
ca acesta pagina nu este decat un INTRO aici imi propun sa fac o descriere
in mare a ceea ce trebuie sa stiti despre cracking.
Structura unui executabil
--------------------------------------------------------------------------------
O imagine reala a
unui executabil v-o puteti face privindu-l ca pe un sir foarte lung format
numai din 1 si 0 , ceva de genul 101110100010001010001001001010........
:-).
Cum recunoaste sistemul
de operare ca acest sir este un program executabil nu este treaba noastra
dar in mare va pot spune ca el scaneaza prin multitudinea de biti la adrese
fixe , predefinite anunite siruri si comparand cu ceea ce cunoaste el
da verdictul. Mai pe omeneste sa presupunem ca avem un fisier de tipul
MZ..,qwu..u22..111002.7izj...wh.............( 1 si 0 de mai sus pot arata
si asa in baza 16 ..atentie)..pai Os-ul (sistemul de operare) cauta sa
spunem primii 2 bytes in cazul nostru gasind MZ, apoi ii compara cu ceva
ce el cunoaste si apoi in functie de rezult stie ca are de-a face cu un
executabil...sau altceva.
O alta chestie interesanta
e ca bitii aia nu stau asa la intamplare. Ei reprezinta condensarea pana
aproape de perfectiune a informatiei... si asta-i nimic... cand te gandesti
la ADN... Un fel de functie daca se poate spune asa, care in volumul infim
pe care-l ocupa contine atatia parametrii incat sa dea nastere unui organism
atat de complex cum e corpul uman si apoi mai este si... mintea... eeeeheheeee....
O parere despre cum
e compus un executabil v-o puteti face utilisand un PE wiewer. Acest program
arata sectiunile executabilului zone in executabil asemanatoare unui organism.
Unele stocheaza cod executabil... un fel de inima altele resurse... bitmapuri
icoane text un fel de haine...
Cam atat despre structura...
lucrurile sunt complicate ar mai fi de mentionat aici ca fiecare program
atunci cand incepe sa se execute are o adresa bine definita de unde sa
o faca atunci cand se incarca in memorie. Aceasta este specificata desigur
cum banuiti intr-o zona precisa in executabil si se numeste Entry Point
(EP).
Cand apasam pe iconita
unui executabil OS-ul citeste o gramada de parametii din exe printre care
si EP-ul, il incarca apoi in memorie (pe exe) si da drumul exe-ului tocmai
la adresa precizata de EP.
Dezasambloare si debuggere
--------------------------------------------------------------------------------
Pentru inceput trebuie
sa stiti care sunt instrumentele necesare si ce fac ele in mare..cu ce
ne ajuta ele in munca noastra. O prima clasa ar fi cea a dezasambloarelor
si debuggerelor programe cu care codul binar este transformat in limbaj
inteligibil pentru om de fapt cam ultimul nivel din care omul mai poate
intelege ceva.
Iata aici cum din
acest se transforma: Cod binar 1010101100101 -------> dezasambler debugger
-------> call, jmp, deci codul binar (binar de la unu si zero) e transformat
in instructiuni care pentru noi inseamna ceva.
Diferenta dintre un
dezasamblor si un debugger este faptul ca primele proceseaza programul
executabil si genereaza apoi un "dead listing" (un gen de fisier
text in care codul binar e tradus in limbaj de asamblare) pe cand celelalte
care sunt si cele mai inportante tool-uri fac acelasi lucru dar in timp
ce programul este incarcat in RAM si se executa.
De aici rezulta si
superioritarea acestora din urma fata de primele... adicatelea debuggerele
dau posibilitatea crackerului sa ruleze programul instructiune cu instructiune
sa modifice in timp real instructiuni si totodata sa observe efectele
modificarilor facute... bla bla bla...
SoftIce este the best
tool in clasa debuggerelor practic 95% din programele crackuite de mana
lu' SIce mor. Ca dezasambloare e de amintit W32Dasm care este si debugger
este usor de folosit datorita interfetei win32.
Daca acum auziti prima
data de ele va sfatuiesc sa faceti repede rost de ele si sa incepeti prin
a va obisnui cu utilizarea lor...
Nu insist mai mult
utilizarea lor e mai bine de invatat pe exemple..
Hexeditoare (eeee.. buuuun.. ce este un hexeditor ?)
--------------------------------------------------------------------------------
Odata crackuite (sparte)
utilizand fie SIce fie alte programe este nevoie ca crackul sa fie aplicat
definitiv executabileleor. Acest lucru este posibil utilizand un hexeditor.
Eeee.. bun.. ce este un hexeditor?
Un hexeditor este
un program care "deschide" un executabil afisandu-i continutul
in forma hexadecimala (vezi reprezentare numerelor in diferite baze ..2..10..16).
Oricum intr-un astfel de hexeditor veti vedea numere de la 1 la 10 si
litere de la A....F.
Nu mentionez aici
nici un nume... ele sunt foarte numeroase... ramane la latitudinea fiecaruia
sa-si aleaga pe cel ce-i place mai mult.
" ERA Unpackers "(despachetatoare)
--------------------------------------------------------------------------------
Trebuie sa mai stiti
ca din ce in ce mai multe programe "ies" pe piata impachetate.
Adica executabilul spre exemplu xxxx.exe este supus unei operatii de criptare...
sau de comprimare in scopul protejarii lui impotriva actiunilor corozive
a crack-erilor... eh eh eh...i ntelegi ce vreau sa spun. Aici este ceva
mai mult de discutat.
Un astfel de executabil
dupa opeatia de impachetare devine yyyy.exe cu o marime variabila (daca
initial ar fi avut 2Mb dupa ar putea avea 3sau 1Mb in general mai mica).
Pe piata actuala se gaseste o varietate de astfel de packere... Neolite,
PKlite, Shrinker, ASPack ce stau la dispozitia softistilor pentru a-si
proteja munca.
Cum actionaza aceste
packere ?.... in mare supun executabilul ce trebuie protejat unor algoritmi
mai mult sau mai putin complecsi rezultand in final o mare harababura
( veti intelege mai putin mai tarziu cu afecteaza ea dezasambloarele ).
O data harababura terminata isi lasa o parte din ele la inceputul programului
EP si banuiti cred ca aceasta nu poate fi altceva decat un algoritm prin
care harababura sa fie adusa la forma ei initiala.
Dar cu aceasta harababura
cum se mai poate executa programul ? Pai simplu... intai se despacheteaza
datorita algoritmului cu care incepe sa ruleze si dupa ce s-a despachetat
total aceasta rutina de despachetare da controlul spre executie programului
propriuzis.
In SoftIce noi putem
monitoriza tot acest proces dar acest lucru cere multa experienta si determinarea
algoritmilor de impaketare este foarte greoaie chiar si pentru experti.
Sa vedem cum ne afecteaza
activitatea aceste packere. Sa presupunem ca avem de anulat un nag (o
fereastra nedorita)... ei bine cautam in SoftIce ceva jmp-uri si gasim
ca avem de inlocuit stiu eu 74 spre exemplu cu EB. Revenim apoi intr-un
hexeditor sa aplicam patch-ul (petecul) si stupoare nu gasim 74 ala.
Nota:
- primul semn ca un program e impachetat e faptul ca daca cautam intr-un
hexeditor un sir hexa (pe care il notam la intamplare din SoftIce) nu
il gasim.
- o alta simptoma ar fi aceea ca dupa incarcarea intr-un dezasambler nu
gasim string referance, si instructiunile nu au nici o insiruire logica.
Acestea fiind spuse
va dati seama ca peticirea este imposibila caci nu vom gasi ceea ce cautam.
Vom ramane cu programul spart doar la stadiul de SIce. :-(
Si pentru ca suntem
la sectiunea de unpackers sa revenim la oile noastre.
La ce sunt bune unpackerele?
Pai ati uitat ca pentru
a se executa programele impachetate au nevoie sa se despacheteze intai
? Si unde... in memorie desigur. Eeee asta era... deci ce fac unpackerele
astea de fapt... asteapta pana ce rutina de despachetare isi termina treaba
si apoi dump-eaza zona de memorie in care se afla programul gata de executie.
Frumos nu?
Cu toate acestea rezultatele
nu sunt garantate tocmai pentru ca exista o multitudine de packere fiecare
necesitand parametrii specifici de dumpare.
Tatal tuturor unpackerelor si nasul packerelor e ProcDump ajuns acum la
versiune 1.6. Acesta recunoaste multe packere si in plus ofera posibilitatea
configurarii pentru cele necunoscute.
Odata executabilele
despachetate si functionale (nu orice dump poate fi functional 99%) nu
ne ramane decat sa aplicam patch-ul.
Patchers (generatoare de crackuri)
--------------------------------------------------------------------------------
Presupunem ca avem
programul gata spart si vrem sa'l facem public. Nu stim de asemeni prea
multe de-ale programarii. Ce facem atunci ? Patcherele sunt mici executabile
care au capacitatea de a genera alte executabile. Ele sunt de mai multe
tipuri in functie de necesitati:
Search and replace cauta o secventa predefinita intr-un anumit fisier
si o inlocuieste cu ce trebuie... util in cazul unor crackuri pentru mai
multe versiuni ale aceluiasi program care pastreaza aceeasi protectie
dar are dimensiuni diferite (exe-le).
File compare genereaza un crack-ul prin compararea fisierului spart cu
originalul... in acest caz crackul e functional doar pentru versiunea
exacta a programului pe care a fost facut.
RunTime pach destul de interesant si in ultima instanta un inlocuitor
la unpatcherelor... programul nu mai trebuie despachetat (si ganditi-va
ce usurare si in plus nu de putine ori exista cazuri cand aceasta esueaza),
patchul executandu-se in timpul rularii in memorie a programului ce trebuie
spart.
Alte utilitare
--------------------------------------------------------------------------------
Programatorii vor
sa ne umple calculatorul cu tot felul de porcarii . V-ati pus vreodata
intrbarea cum poate un program sa tina minte de exemplu data cand a fost
instalat astfel ca dupa x zile sa va bage nag-ul in fata si sa va spuna
arogant... "Gata m-am terminat" ? ... ce nesimtire !!!! ...sau
la o protectie putin mai complicata chiar daca dati ceasul inapoi sa va
ameninte ca va formateaza hardul!!!.
Desigur el nu poate
face asta decat lasandu-si ceva amprente prin registrii sau ascunzand
pe undeva un fisier cu data resprctiva criptata sau nu.
Important in crackuirea
unui program este sa stim ce si unde modifica acesta la instalare sau
in timpul rularii... de ce date are el nevoie din registrii... etc.
Doua astfel de programe
unul monitorizand registrii si altul fisierele cu care interactioneaza
o anumita aplicatie sunt RegMon si FileMon .
Nu mai vorbim aici
cum putem determina si apoi sterge data... ora... la care s-a instalat
un anumit program numarul de utilizari.. etc. Chiar daca de multe ori
gasirea orei.. datei sunt dificile numai simpla identificare a cheilor
scrise in registru e importanta.. caci aceste chei pot fi sterse si programul
reinstalat ca intaia oara.
|