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.

nego dovoljno mesta da mi ubacimo nas kod za patchovanje. Na toj adresi<br />

cemo postaviti sledece:<br />

00400333 C605 35104000 F> MOV BYTE PTR DS:[401035],0FF<br />

0040033A C605 8A104000 0> MOV BYTE PTR DS:[40108A],0<br />

00400341 8BC8 MOV ECX,EAX<br />

00400343 83E1 03 AND ECX,3<br />

00400346 - E9 3C6E0000 JMP inline_a.00407187<br />

Sta smo ovde uradili Jednostavno smo patchovali kod pomocu MOV BYTE<br />

PTR komande (necu objasnjavati zasto bas ove adrese) posle cega smo morali<br />

da vratimo komande koje smo slucajno izbrisali. Dakle da bi ovaj kod radio<br />

potrebno je da vratimo izbrisane komande MOV ECX,EAX i AND ECX,3. Kada i<br />

ovo zavrsimo potrebno je da se vratimo na neizmenjeni deo koda iz ASPack<br />

sekcije. Dakle JMP 00407187 nas vraca na:<br />

00407187 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]<br />

I program ce nastaviti sa izvrsavanjem sve dok ne dodje do OEPa, a nas kod<br />

ce biti patchovan bas kako treba. Stoga posle izvrsavanja ovog patcha nasa<br />

meta nece prikazivati ni NAG a i Secret meni ce biti ukljucen.<br />

Inline patching: EZIP 1.0<br />

Buduci da je ASPack bio malo tezi primer sada cu objasniti veoma lako<br />

ubacivanje koda u EZip. Otvorite metu crackme.eziped.original.exe pomocu<br />

Ollyja i pogledajte kako izgleda OEP:<br />

004070BE > $ /E9 19320000 JMP crackme_.0040A2DC<br />

Posto je ovo neka vrsta redirekcije ka kodu pakera ispraticemo ovaj JMP sa<br />

F8 posle cega cemo se naci ovde:<br />

0040A2DC /> \55<br />

PUSH EBP<br />

0040A2DD |. 8BEC<br />

MOV EBP,ESP<br />

0040A2DF |. 81EC 28040000 SUB ESP,428<br />

0040A2E5 |. 53<br />

PUSH EBX<br />

0040A2E6 |. 56<br />

PUSH ESI<br />

Posto smo vec otpakivali EZip znamo da se posle izvrsavanja JMP EAX<br />

komande program prebacuje i sa izvrsavanja pakerovog koda prelazi na<br />

izvrsavanje otpakovanog koda. To se desava ovde:<br />

0040A687 |. 5D<br />

0040A688 |. FFE0<br />

POP EBP<br />

JMP NEAR EAX<br />

Posto smo vec rekli da skokove koji vode do prvog OEPa mozemo izmeniti<br />

tako da umesto ka OEPu vode ka nasem patch kodu, ovde necemo uraditi<br />

nista novo. Samo cemo skok JMP EAX izmeniti u patch kod a sav kod koji ce<br />

pri tome biti izgubljen cemo nadoknaditi na racun CC bajtova iza RET<br />

komande. Kako znamo da ovo smemo da uradimo Pa jednostavno samo<br />

jedna INT3 komanda ima smisla ali vise njih sluze samo za ispunjenje nekog<br />

prostora! Dakle posle patcha nas kod ce izgledati ovako:<br />

0040A687 . 5D<br />

POP EBP<br />

0040A688 . 90<br />

NOP<br />

0040A689 . 90<br />

NOP<br />

0040A68A > C605 35104000 MOV BYTE PTR DS:[401035],0FF<br />

0040A691 . C605 8A104000 MOV BYTE PTR DS:[40108A],0<br />

0040A698 . FFE0<br />

JMP NEAR EAX<br />

Napominjem da u fajlu inline.eziped.exe postoji dodatni kod ispod JMP EAX<br />

komande koji je isti kao i onaj koji se nalazi u originalnom fajlu. Ovo je<br />

takozvano vracanje ukradenog koda. Ovde smo to uradili na racun CC<br />

bajtova jer je to u ovom slucaju, kod ovog pakera, moguce.<br />

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

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

Saved successfully!

Ooh no, something went wrong!