You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Reversing CRC32 checksJedna od veoma cesto koriscenih anti-<strong>cracking</strong> tehnika je provera CRCchecksuma nekog fajla. Sta je to CRC??? CRC je tehnika koja omogucavaproveru sadrzine nekog fajla. Ona jednostavno uzme neki fajl, napravinjegovu “sliku” i to pretvori u osmocifreni hexadecimalni broj koji predstavljaunikatnu “sliku” posmatranog fajla. Posto CRC zavisi od sadrzine fajla toznaci da razliciti fajlovi imaju razlicite CRCove. CRC je broj koji se nalazi urasponu od 00000000 pa do FFFFFFFF. Ovo ujedno znaci da ako promenimoneki fajl patchovanjem promenicemo mu i CRC pa ce sam programjednostavnom proverom znati da je modifikovan. Imajte na umu da ako jeova zastita dobro implementirana u program bice vam potrebno, izuzetnomnogo vremena i zivaca da pronadjete gde se to tacno nalazi CRC provera uprogramu koji reversujete. Pimer koji sam ja za ovu priliku napravio jeveoma lak i necete imati nikakvih problema da ga reversujete. Primer senalazi ovde: …\Casovi\Cas7\CRC\crc32.exe, a sadrzi i pomocni fajl crc32table.txtkoji ustvari cuva enkriptovani CRC32 checksum crc32.exe fajla. Primecujeteda se u txt fajlu cuva CRC checksum koji program koristi da ga uporedi sasvojim CRCom i pitate se zasto je to ovako??? Zasto program ne cuva svojCRC u samom sebi??? Pa odgovor je veoma jednostavan: Ako bi programcuvao svoj CRC u samom sebi CRC bi se uvek menjao, ako kompajlujemoprogram koji cuva u sebi jedan CRC, zbog tog broja CRC bi se promenio, aako bi taj broj promenili u novi CRC, onda bi se CRC opet promenio pa sezbog toga CRC cuva u posebnom fajlu ili u Registryu. Ako st<strong>art</strong>ujete ovajprimer videcete da se pojavljuje standardan NAG ekran pre samogst<strong>art</strong>ovanja i zatvaranja aplikacije. Ovo je ono sto moramo da promenimo uovom primeru je da ubijemo ovaj NAG. Ovo je veoma lako i to, ako ste citaliknjigu lepo sa razumevanjem, morate da znate da uradite sami. Kada ovouradite snimite fajl kao crc32.exe a stari reimenujte u crc32_1.exe. Ako sadast<strong>art</strong>ujete crc32.exe fajl prikazace se poruka o pogresnom CRCu. Mozete inju naci i promeniti. Ovo je isto lako:00451104 |. E8 DB3AFBFF CALL crc32.00404BE400451109 |. 74 40 JE SHORT crc32.0045114B0045110B |. 6A 40 PUSH 40; MB_OK|MB_ICONASTERISK|MB_APPLMODAL0045110D |. 68 C0114500 PUSH crc32.004511C0 ; |Title = "Error"samo treba promeniti skok na adresi 00451109 iz JE u JMP i to je to. Kao storekoh ovo je veoma laka “zastita”, dok ce vas lepo implementirana CRCprovera posteno namuciti. Pogledajmo malo ovu CRC zastitu koja pocinje naadresi 00450ED0. Jednostavnim pregledom stringova videcemo da programotvara fajl crc32table.txt i kopira crc32.exe u bak.bak da bi najverovatnije nanovom bak.bak fajlu proverio CRC. Ovo je zanimljivo posto kako vidimoprogram koristi specificno ime crc32.exe a ne neku promenljivu u slucaju dase ime exe fajla promeni. I ovo mozemo da iskoristimo. Iskopirajmocrc32.exe u novi fajl new.exe i u new.exe fajlu samo ubimo NAG. Ako sadast<strong>art</strong>ujemo new.exe videcemo da nema NAGa ali da nema ni poruke opogresnom CRCu jer se CRC32 proverava na kopiji crc32.exe fajla a ne nasamom sebi, u ovom slucaju new.exe-u. Naravno ako u praksi nadjete ovakoglupu zastitu posaljite mi email programera koji ju je napisao da ga castimpivom :) A posto sam ovako glupu zastitu napisao ja sam, mislim da cu<strong>The</strong> Art <strong>of</strong> Cracking by Ap0x Page 74 <strong>of</strong> 165