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.

Ova RVA adresa je 00443600 a ovo predstavlja prvu RVA adresu od 1000<br />

novih dodatih bajtova. Ovde cemo dodavati nas kod. Sada pocinje prava<br />

zabava :)<br />

Prvo cemo dodati sve ASCII vrednosti koje su nam potrebne. Selektovacemo<br />

adresu 00443600 i pritisnucemo desno dugme i izabracemo Binary -> Edit...<br />

U novootvorenom prozoru cemo u ASCII polje uneti http://www.google.com<br />

a primeticete da Keep size checkbox ne sme da bude otkacen.<br />

Drugi string cemo ubaciti na adresi 00443616, tako da cemo selektovati<br />

00443615 i izmeniti drugi bajt i tri iza njega u string “open” - bez navodnika.<br />

Zasto ovako razmacinjemo dva stringa Zato sto se svaki string mora<br />

zavrsavati sa po jednim 0x00 bajtom.<br />

Dalje cemo presresti loop koji je zaduzen za prevodjenje poruka i njihovu<br />

interpretaciju. Ovaj loop se najlakse nalazi tako sto cemo naci mesto gde se<br />

nalaze WM_nesto komande. Taj CALL pocinje ovde 004085C8, a vec je<br />

definisan kada se pojavio default dijalog na ekranu. Pogledajte ovu adresu:<br />

00408724 . 68 C8854000 PUSH original.004085C8 ; |DlgProc = original.004085C8<br />

NOPovacemo sve od 00408611 pa do 00408624 jer nam taj dao koda ne<br />

treba. Na mesto prikazivanja poruke kada se pritisne dugme cemo ubaciti<br />

pojavljivanje novog dijaloga i obradu poruka. Selektovacemo adresu<br />

00408611 i na to mesto cemo ubaciti sledeci kod:<br />

JMP 00443620<br />

a ovo ce nas odvesti do novog koda koji cemo dodati na toj adresi.Na adresi<br />

00443620 dodajte kod:<br />

CMP ESI,0BBF<br />

JNZ 00443643<br />

PUSH 40 {<br />

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

PUSH EAX<br />

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

Kod za prikazivanje MsgBoxA<br />

PUSH EAX<br />

PUSH EBX<br />

CALL 00404C2C }<br />

JMP 00408625<br />

NOP<br />

NOP<br />

Sta se ovde desava Prvo se ESI (sadrzace ID objekta koji je pritisnut)<br />

uporedjuje sa 0BBF, to jest proveravamo da li je pritisnuto drugo (novo)<br />

dugme , a ako jeste onda cemo prikazati backupovani messagebox sa<br />

starog (00408611) Posle ovoga se proverava ako ovo nije tacno program ce<br />

skociti na neku dalju adresu, a ako je ESI 0BBF onda ce se prikazati<br />

MessageBox na ekranu. Ako se pokaze MessageBox na ekranu onda cemo se<br />

posle prikazivanja MessageBoxa vratiti u loop za proveru poruka pomocu<br />

JMPa. Dalje cemo selektovati adresu 00443643 i unecemo sledece:<br />

CMP ESI,0BBE<br />

JE 00408374<br />

Ovde poredimo ESI sa dugmetom za gasenje programa, EXIT. Ako je<br />

pritisnuto ovo dugme program ce otici na mesto iznad message loopa koje je<br />

zaduzeno za gasenje programa. Ovo smo ranije odredili da se nalazi na<br />

adresi 00408374. Dalje cemo selektovati adresu 00443655 i unecemo:<br />

CMP ESI,0BBD<br />

JNZ 00443673<br />

PUSH 1 {<br />

PUSH 0<br />

PUSH 0<br />

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

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

Saved successfully!

Ooh no, something went wrong!