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