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.

FSG 1.30 - 1.33<br />

FSG takodje sluzi samo za smanjenje velicine konacnog<br />

kompajlovanog exe ili dll fajla. On, kao ni UPX, u sebi ne sadrzi kod za<br />

zastitu od otpakivanja ili debuggovanja sa Ollyjem ili bilo kojim drugim<br />

debuggerom. Pre nego sto pocnemo sa otpakivanjem mete pakovane FSGom<br />

objasnicu par stvari vezanih za kod koji otpakuje program u memoriju. Bez<br />

obzira na vrstu i verziju pakera sledeca stvar mora uvek biti ispunjena:<br />

Posle izvrsavanja koda za otpakivanje program ce nekako skociti na<br />

virtualnu adresu otpakovanog koda. Ovo skakanje moze biti uradjeno samo<br />

na dva nacina, preko komande RET u slucaju da se kod za otpakivanje<br />

ponasa kao CALL i preko komande JMP (i varijanti) kada se posle<br />

otpakivanja direktno skace na OEP.<br />

Ovo je najbitnije pravilo sto se tice otpakivanja zapakovanih programa i uvek<br />

mora biti ispunjeno sto cemo mi iskoristiti u nasu korist. Meta pakovana sa<br />

FSGom se nalazi u folderu Cas10 a zove se crackme.fsg.exe i nju cemo<br />

otpakovati uz pomoc Ollyja. Kada otvorite ovu metu pomocu Ollyja videcete<br />

sledece komande na mestu OEPa:<br />

00405DC5 > BE A4014000<br />

MOV ESI,crackme_.004001A4<br />

00405DCA AD LODS DWORD PTR DS:[ESI]<br />

00405DCB 93 XCHG EAX,EBX<br />

00405DCC AD LODS DWORD PTR DS:[ESI]<br />

00405DCD 97 XCHG EAX,EDI<br />

00405DCE AD LODS DWORD PTR DS:[ESI]<br />

Ocigledno je da je ovo kod koji pripada pakeru i da to nije originalni<br />

nepakovani kod. Kao i kod UPX se na kraju koda za otpakivanje nalazi gomila<br />

0x00 bajtova. Deo koda od packer OEPa pa do 00405E8C predstavlja deo<br />

koda koji sluzi direktno i samo za otpakivanje. U ovom delu koda cemo<br />

pokusati da pronadjemo skok koji bi vodio do adrese koja ne pripada ovom<br />

delu koda, od 00405DC5 do 00405E8C. Svi skokovi pripadaju ovom delu<br />

adresa osim jednog koji se nalazi na adresi 00405E66.<br />

00405E66 - 0F84 26B5FFFF JE crackme_.00401392<br />

Ovaj skok moze voditi direktno do OEPa. Ovo mozemo proveriti tako sto<br />

cemo staviti breakpoint na tu adresu i pusticemo je da se izvrsi. Posto je ce<br />

ovo malo duze trajati jer se ovaj skok ne izvrsava vise puta ali se preko<br />

njega prelazi vise puta pa zbog toga nije pozeljno traziti OEP na ovaj nacin.<br />

Mi cemo iskoristiti cinjenicu da se u registru EIP uvek nalazi adresa koja ce<br />

sledeca izvrsiti. Dakle ako je EIP = 00401392 sledeca adresa koja ce se<br />

izvrsiti je 00401392 to jest pravi OEP. Za ovo cemo iskoristiti mogucnot koju<br />

nam pruza Olly:<br />

Tracing. Pritisnite<br />

CTRL+T, ispunite<br />

prozor kao na<br />

slici i pritisnite<br />

OK. Sada nam<br />

ostaje samo da<br />

pokrenemo Trace<br />

pritiskom na<br />

CTRL + 12 ili na Debug -> Trace over u gornjem meniju. Posle nekoliko<br />

sekundi Olly ce se zaustaviti ovde:<br />

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

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

Saved successfully!

Ooh no, something went wrong!