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>The</strong> Serials – KeyFile<br />

Cesto sretani problem prilikom reversinga su i takozvani keyfajlovi. Ovi<br />

fajlovi predstavljaju samo mesto gde su sacuvani podaci vezani za<br />

registraciju. Mi cemo uz pomoc Ollya i vaseg omiljenog Hex editora razbiti<br />

jednu ovakvu zastitu. Meta se zove CrackMe.exe a nalazi se u Cas3 folderu.<br />

Najcesce se za citanje fajlova koristi API funkcija CreateFileA pa cemo<br />

postaviti break-point na nju. Ovo cemo uraditi na standardan nacin: U Ollyu<br />

cemo izabrati Executable modules -> View names -> CreateFileA -> Set<br />

breakpoint on every reference...<br />

Posle ovoga cemo startovati program pomocu opcije Run, posle cega ce<br />

program zastati na sledecem mestu:<br />

0040416A . E8 9DD0FFFF<br />

CALL <br />

Sa F8 cemo izvrsiti ovaj CALL i zavrsicemo ovde:<br />

0040120C $- FF25 04914200<br />

JMP DWORD PTR DS:[<br />

Uklonite ovaj break-point. Sada cemo pritiskati F8 onoliko puta koliko nam<br />

treba da se vratimo iz kernel32.dll. Pritiskajte F8 dok ne izvrsite prvu RET<br />

komandu, posle cega cemo se vratiti ovde:<br />

0040416F > /83F8 FF<br />

CMP EAX,-1<br />

00404172 . /74 29 JE SHORT CrackMe.0040419D<br />

Ovaj CMP proverava da li postoji fajl na disku koji sadrzi podatke o<br />

registraciji programa. Kako se zove taj fajl Ova informacija je sigurno<br />

morala da bude prosledjena gornjoj CALL CREATEFILEA funkciji, jer ovaj API<br />

mora da zna koji fajl treba da otvori. Zbog ovoga cemo postaviti break-point<br />

na prvu PUSH komandu koja se prosledjuje tom CALLu. Postavicemo breakpoint<br />

ovde:<br />

0040415A > \6A 00 PUSH 0 ; /hTemplateFile = NULL<br />

Pritisnite F9 kako biste nastavili sa izvrsavanjem programa. Sada nazad u<br />

crackmeu pritisnite dugme Try Again i program ce zastati na<br />

novopostavljenom break-pointu. Sada cemo izvrsiti ovaj CALL sa F8 sve dok<br />

ne dodjemo do PUSH EAX komande. Kada dodjemo do nje sadrzaj EAXa ce<br />

biti ime fajla koji nam treba. Taj fajl je ctm_cm02.key.<br />

Sada cemo napraviti jedan fajl sa sadrzajem jednog stringa, sa stringom<br />

ap0x (nula a ne O). Ovo mozete uraditi uz pomoc Notepada ili sa nekim Hex<br />

editorom. Pitanje je samo gde ce se to ovaj fajl nalaziti Odgovor je<br />

jednostavan: On ce se nalaziti u istom direktorijumu ili bi PUSH EAX funkcija<br />

sadrzala celu putanju do ctm_cm02.key fajla.<br />

Sada cemo ponovo pritisnuti dugme Try again u crackmeu i program ce<br />

zastati na PUSH EAX break-pointu. Polako cemo izvrsavati sve redove koda<br />

sa F8 i posmatracemo sta se desava. Ovde:<br />

0040416F > /83F8 FF<br />

CMP EAX,-1<br />

00404172 . /74 29 JE SHORT CrackMe.0040419D<br />

se sada ne izvrsava JE skok pa cemo se posle izvrsavanja donje RET<br />

komande naci ovde:<br />

00426592 . E8 4DC1FDFF CALL CrackMe.004026E4<br />

...<br />

004265AA . E8 F9C0FDFF<br />

CALL CrackMe.004026A8<br />

kada dodjemo do ovog drugog CALLa videcemo da EAX sada sadrzi broj 4 sto<br />

je duzina naseg stringa u key fajlu. Vidimo i koji red ispod da se EAX koristi<br />

za proveru da li je key fajl prazan ili ne.<br />

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

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

Saved successfully!

Ooh no, something went wrong!