Jump to content
Gonzalez

Intro in lumea cracking-ului

Recommended Posts

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.

Credit: B-Chris

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...