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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

PeCompact 2.22<br />

Moram da priznam da sam svojevremeno mislio da je PeCompact<br />

zastita bolja nego sto jeste. Sada sam konacno odlucio da se posvetim<br />

rucnom otpakivanju aplikacije zasticene PeCompactom 2.22. Posto sam sa<br />

interneta ranije skinuo sam trial PeCompact pakera primetio sam da se mogu<br />

birati moduli kojima ce se pakovati exe fajlovi. Default podesavalje ukljucuje<br />

samo jedan dll i on se zove pecompact_ffss.dll ali se meta pakovana<br />

PeCompactom otpakuje isto kao da imamo i ukljucen dll pecompact_crc32.dll<br />

fajl. Meta za ovaj deo knjige je pakovana sa trial verzijom PeCompacta mada<br />

licno mislim da nema veze da li je trial ili ne, moram ovo da naglasim ako<br />

razlike ipak postoje. Sama meta se zove crackme.pecompact22.exe a nalazi se<br />

u folderu Cas10. Ovu metu cemo otvoriti pomocu Ollyja, i na OEPu cemo<br />

imati sledece:<br />

004012C0 > $ B8 D07D4000 MOV EAX,crackme_.00407DD0<br />

004012C5 . 50<br />

PUSH EAX<br />

004012C6 . 64:FF35 00000> PUSH DWORD PTR FS:[0]<br />

004012CD . 64:8925 00000> MOV DWORD PTR FS:[0],ESP<br />

004012D4 . 33C0<br />

XOR EAX,EAX<br />

004012D6 . 8908<br />

MOV DWORD PTR DS:[EAX],ECX<br />

Ovaj “OEP” izgleda dosta cudno. Metu cemo otpakovati na nacin na koji sam<br />

je ja otpakovao. Preci cemo deo OEPa sa F8 sve dok ne dodjemo do adrese<br />

004012D6 kada ce Olly prikazati Access violation. Ovo cemo iskoristiti u nasu<br />

korist. Pritisnucemo CTRL+F7 kako bismo stigli do reda iznad kojeg se desio<br />

Access violation. To se desilo upravo ovde:<br />

77FB4DB3 |. 8B1C24<br />

77FB4DB6 |. 51<br />

77FB4DB7 |. 53<br />

MOV EBX,DWORD PTR SS:[ESP]<br />

PUSH ECX<br />

PUSH EBX<br />

Vidimo da se ne nalazimo u kodu crackmea nego se nalazimo u kodu ntdll.dll<br />

fajla. Sa F8 cemo se kretati kroz kod sve dok ne dodjemo do ove adrese:<br />

77FB4DC6 |. E8 480BFCFF CALL ntdll.ZwContinue<br />

tada cemo pritisnuti F7 da udjemo u ovaj CALL jer ce nas to vratiti na mesto<br />

iznad kojeg se desio Access violation. Sada se nalazimo ovde<br />

77F75913 >/$ B8 20000000<br />

77F75918 |. BA 0003FE7F<br />

77F7591D |. FFD2<br />

MOV EAX,20<br />

MOV EDX,7FFE0300<br />

CALL EDX<br />

77F7591F \. C2 0800 RET 8<br />

ali smo i dalje u ntdll.dll fajlu, pa cemo zato sa F8 izvrsiti sve komande do<br />

ukljucujuci i RET 8 komandu. Tada cemo se naci ovde:<br />

00407DF3 B8 796D40F0 MOV EAX,F0406D79<br />

00407DF8 64:8F05 0000000> POP DWORD PTR FS:[0]<br />

ovo je vec deo koda PeCompacta koji sluzi za otpakivanje fajla u memoriju.<br />

Ovaj deo koda cemo izvrsiti sa F8 sve dok ne dodjemo do adrese<br />

00407E94 5D POP EBP<br />

00407E95 - FFE0 JMP EAX ; crackme_.<br />

i kao sto vidimo JMP EAX vodi do ModuleEntryPoint-a to jest do samog OEPa<br />

pa cemo i ovaj skok izvrsiti sa F8 i naci cemo se na OEPu, koji posle analize<br />

sa CTRL+A izgleda ovako:<br />

004012C0 >/$ 55<br />

004012C1 |. 8BEC<br />

PUSH EBP<br />

MOV EBP,ESP<br />

004012C3 |. 6A FF PUSH -1<br />

Sada ostaje samo da dumpujemo memoriju sa LordPEom i da popravimo<br />

importe sa ImpRecom, posle cega smo uspesno otpakovali PeCompact.<br />

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

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

Saved successfully!

Ooh no, something went wrong!