The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
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