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.

Inline patching: UPX 0.8x-1.9x<br />

Kao sto je vec objasnjeno loaderi se koriste kada zelimo da napravimo<br />

patch za pakovane ili kriptovane programe. Njih je veoma lako napraviti ali<br />

posto u vecini slucajeva nisu pouzdani koristicemo klasicne patcheve na<br />

pakovanim programima. Zvuci li interesantno Program specijalno pisan za<br />

potrebe ovog poglavlja se nalazi u folderu Cas11 a zove se NAG.exe.<br />

Otvoricemo ovaj fajl pomocu Ollyja da bismo nasli mesto koje treba da<br />

patchujemo. Da bismo nasli mesto koje treba da patchujemo, prvo cemo<br />

otpakovati program i naci bajt koji zelimo da patchujemo. Sam NAG se nalazi<br />

ovde:<br />

00407F1F /74 19<br />

JE SHORT NAG_exe_.00407F3A<br />

00407F21 |6A 40 PUSH 40<br />

00407F23 |68 507F4000 PUSH NAG_exe_.00407F50 ; ASCII "NAG:"<br />

00407F28 |68 587F4000 PUSH NAG_exe_.00407F58 ; ASCII "Ovo je NAG screen<br />

koji treba da ubijete !!!"<br />

00407F2D |53<br />

PUSH EBX<br />

00407F2E |E8 B5C6FFFF CALL <br />

Ocigledno je da treba samo da patchujemo skok JNZ u JMP, to jest sa 74 u<br />

EB. Potrebni podaci za inline patch su adresa 00407F1F i vrednost kojom<br />

cemo da patchujemo. Potrebno je samo da nadjemo mesto gde cemo da<br />

patchujemo. Ovo moramo da uradimo tik posle sto se program otpakuje. Pre<br />

nego sto skoci na sam OEP. Stoga cemo prepraviti skok ispod donje POPAD<br />

komande UPX pakera tako da nas preusmeri na kod za patchovanje. Evo<br />

kako bi to trebalo da izgleda (narandzasti su izmenjeni / dodati redovi)<br />

0041291E > \61<br />

POPAD<br />

0041291F . EB 14<br />

JMP SHORT NAG2.00412935<br />

00412921 90 NOP<br />

00412922 90 NOP<br />

00412923 90 NOP<br />

00412924 3C294100 DD NAG2.0041293C<br />

00412928 44294100 DD NAG2.00412944<br />

0041292C 08A74000 DD NAG2.0040A708<br />

00412930 00 DB 00<br />

00412931 00 DB 00<br />

00412932 00 DB 00<br />

00412933 00 DB 00<br />

00412934 00 DB 00<br />

00412935 C705 1F7F4000> MOV DWORD PTR:[407F1F],019EB<br />

0041293F .- E9 B056FFFF JMP NAG2.00407FF4<br />

Vidite sta se desava. Izmenili smo skok tako da on vodi ka delu za<br />

patchovanje, posle cega se sa starim UPX skokom vracamo na OEP.<br />

Primeticete oblik komande za patchovanje memorije:<br />

MOV DWORD PTR:[407F1F],019EB<br />

Mislim da je jasno sta ovde radimo. Na adresu 00407F1F cemo ubaciti<br />

bajtove EB19. Primetite samo da su bajtovi u obrnutom redosledu, prvo ide<br />

19 pa EB, a uvek ce im prethoditi nula ako patchujete pomocu Ollyja. Bitno<br />

je da zapamtite da ako nema mesta za dodavanje bajtova odmah iza patcher<br />

koda, morate osloboditi mesto negde pomocu nekog Hex Editora. Ovaj<br />

postupak je vec objasnjen kod dodavanja funkcija tako da nema potrebe da<br />

ovo ponovo objasnjavam.<br />

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

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

Saved successfully!

Ooh no, something went wrong!