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.
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