07.02.2015 Views

The Art of Reversing by Ap0x - Tutoriali.org

The Art of Reversing by Ap0x - Tutoriali.org

The Art of Reversing by Ap0x - Tutoriali.org

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Reversing</strong> CRC32 checks<br />

Jedna od veoma cesto koriscenih anti-cracking tehnika je provera CRC<br />

checksuma nekog fajla. Sta je to CRC CRC je tehnika koja omogucava<br />

proveru sadrzine nekog fajla. Ona jednostavno uzme neki fajl, napravi<br />

njegovu “sliku” i to pretvori u osmocifreni heksadecimalni broj koji<br />

predstavlja unikatnu “sliku” posmatranog fajla. Posto CRC zavisi od sadrzine<br />

fajla to znaci da razliciti fajlovi imaju razlicite CRCove. CRC je broj koji se<br />

nalazi u rasponu od 00000000 pa do FFFFFFFF. Ovo ujedno znaci da ako<br />

promenimo neki fajl patchovanjem promenicemo mu i CRC pa ce sam<br />

program jednostavnom proverom znati da je modifikovan. Imajte na umu da<br />

ako je ova zastita dobro implementirana u program bice vam potrebno<br />

izuzetno mnogo vremena i zivaca da pronadjete gde se to tacno nalazi CRC<br />

provera u programu koji reversujete. Primer koji sam ja za ovu priliku<br />

napravio je veoma lak i necete imati nikakvih problema da ga reversujete.<br />

Primer se nalazi ovde: …\Casovi\Cas7\CRC\crc32.exe, a sadrzi i pomocni fajl<br />

crc32table.txt koji u stvari cuva enkriptovani CRC32 checksum crc32.exe fajla.<br />

Primecujete da se u txt fajlu cuva CRC checksum koji program koristi da ga<br />

uporedi sa svojim CRCom i pitate se zasto je to ovako Zasto program ne<br />

cuva svoj CRC u samom sebi Pa odgovor je veoma jednostavan: Ako bi<br />

program cuvao svoj CRC u samom sebi CRC bi se uvek menjao, ako<br />

kompajlujemo program koji cuva u sebi jedan CRC, zbog tog broja CRC bi se<br />

promenio, a ako bismo taj broj promenili u novi CRC, onda bi se CRC opet<br />

promenio pa se zbog toga CRC cuva u posebnom fajlu ili u Registryju. Ako<br />

startujete ovaj primer videcete da se pojavljuje standardan NAG ekran pre<br />

samog startovanja i zatvaranja aplikacije. Ono sto moramo da promenimo u<br />

ovom primeru je da ubijemo ovaj NAG. Ovo je veoma lako i to, ako ste citali<br />

knjigu lepo sa razumevanjem, morate da znate da uradite sami. Kada ovo<br />

uradite snimite fajl kao crc32.exe a stari reimenujte u crc32_1.exe. Ako sada<br />

startujete crc32.exe fajl prikazace se poruka o pogresnom CRCu. Mozete i<br />

nju naci i promeniti. Ovo je isto lako:<br />

00451104 |. E8 DB3AFBFF CALL crc32.00404BE4<br />

00451109 |. 74 40 JE SHORT crc32.0045114B<br />

0045110B |. 6A 40<br />

PUSH 40; MB_OK|MB_ICONASTERISK|MB_APPLMODAL<br />

0045110D |. 68 C0114500 PUSH crc32.004511C0 ; |Title = "Error"<br />

samo treba promeniti skok na adresi 00451109 iz JE u JMP i to je to. Kao sto<br />

rekoh ovo je veoma laka “zastita”, dok ce vas lepo implementirana CRC<br />

provera posteno namuciti. Pogledajmo malo ovu CRC zastitu koja pocinje na<br />

adresi 00450ED0. Jednostavnim pregledom stringova videcemo da program<br />

otvara fajl crc32table.txt i kopira crc32.exe u bak.bak da bi najverovatnije na<br />

novom bak.bak fajlu proverio CRC. Ovo je zanimljivo posto kako vidimo<br />

program koristi specificno ime crc32.exe a ne neku promenljivu u slucaju da<br />

se ime exe fajla promeni. I ovo mozemo da iskoristimo. Iskopirajmo<br />

crc32.exe u novi fajl new.exe i u new.exe fajlu samo ubijmo NAG. Ako sada<br />

startujemo new.exe videcemo da nema NAGa ali da nema ni poruke o<br />

pogresnom CRCu jer se CRC32 proverava na kopiji crc32.exe fajla a ne na<br />

samom sebi, u ovom slucaju new.exe-u. Naravno ako u praksi nadjete ovako<br />

glupu zastitu posaljite mi email programera koji ju je napisao da ga castim<br />

pivom :) A posto sam ovako glupu zastitu napisao ja sam, mislim da cu<br />

<strong>The</strong> <strong>Art</strong> <strong>of</strong> <strong>Reversing</strong> <strong>by</strong> <strong>Ap0x</strong> Page 132 <strong>of</strong> 293

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!