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