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.

Killing NAGs – Dialogs & Olly<br />

Naravno obican MessageBox NAG je veoma lako “ubiti”, ali sta ako se<br />

umesto poziva ka MessageBoxu kao NAG koristi dijalog U ovom slucaju ne<br />

mozemo traziti karakteristicne stringove koji se pojavljuju u prozoru jer se<br />

ovaj tekst na dijalogu nalazi u obliku resursa. Ali saznanje da je dialog resurs<br />

koji program poziva nam govori dve stvari: 1) da se moze pronaci u fajlu<br />

pomocu resource editora i 2) da je statican, odnosno da jedan resurs moze<br />

predstavljati samo jedan prozor (ili neki drugi tip podataka).<br />

Nasa meta koja se ponasa bas na gore opisani nacin se nalazi u<br />

folderu Cas02 a zove se editor.exe. Ovu metu cemo otvoriti pomocu Ollya i<br />

zahvaljujuci njemu cemo ukloniti ovaj NAG.<br />

Vec smo rekli da ce se NAG u ovoj meti prikazati kao poseban prozor,<br />

sto znaci da najverovatnije koristi zaseban deo resursa (.res) koji se nalaze u<br />

ovom .exe fajlu. Zbog ovoga cemo iskorsititi Olly da pogledamo sve resurse<br />

koji se nalaze u ovom fajlu klikom na ALT + M da bismo videli koje sve .dll<br />

fajlove poziva nas .exe fajl, dalje selekcijom glavnog .exe fajla i konacnim<br />

klikom na desno dugme pa na View all resources,posle cega cemo videti ovo:<br />

Videcemo da se u fajlu nalazi tacno jedan dijalog, ciji je ID 384h a ime NAG-<br />

SCREEN. Stvari su ovde veoma ocigledne, ali sada se postavlja pitanje kako<br />

naci mesto sa koga se poziva ovaj dijalog Ako se secate prethodnog primera<br />

sa W32Dasmom i dijalozima znacete da smo koristili ID dijaloga kako bismo<br />

pronasli NAG dijalog. Ovo cemo iskoristiti i ovde, samo sto ce ovde za razliku<br />

od proslog primera pretraga biti mnogo laksa.<br />

Pritisnucemo ALT + C da bismo se vratili u glavni CPU prozor, posle<br />

cega cemo pritisnuti CTRL + F kako bismo potrazili komandu koja prikazuje<br />

ovaj NAG screen. Sada ostaje samo da dobro razmislimo koju komandu treba<br />

da trazimo u fajlu. Ovo je veoma lako (naravno ako se setite prethodnog dialog<br />

primera) posto se API funkciji mora proslediti ID objekta nad kojim se<br />

izvrsava neka komanda potrebno je samo potraziti PUSH 384 komandu<br />

pomocu Ollya. Nasa pretraga fajla ce nas dovesti ovde:<br />

00401416 |. 6A 00 PUSH 0 /lParam = NULL<br />

00401418 |. 68 2B124000 PUSH editor.0040122B |DlgProc = 0040122B<br />

0040141D |. 53 PUSH EBX |hOwner<br />

0040141E |. 68 84030000 PUSH 384 |pTemplate = 384<br />

00401423 |. 6A 00 PUSH 0 |/pModule = NULL<br />

00401425 |. E8 F28B0000 CALL <br />

0040142A |. 50 PUSH EAX |hInst<br />

0040142B |. E8 C68C0000 CALL \DialogBoxParamA<br />

Kao sto vidimo na adresi 0040141E se ID dijaloga prosledjuje<br />

DialogBoxParam APIju zbog cega zakljucujemo da se u ovom delu koda<br />

prikazuje NAG. Posto se i GetModuleHandleA API odnosi na prikazivanje<br />

NAGa (on odredjuje vrednost registra EAX) mozemo i njega da uklonimo<br />

zajedno DialogBoxParamA API pozivom. Dakle da bismo uklonili ovaj NAG<br />

potrebno je da NOPujemo sve od adrese 00401416 pa do adrese 0040142B,<br />

zakljucno sa poslednjom komandom na adresi 0040142B, odnosno sa<br />

CALLom ka DialogBoxParam-u.<br />

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

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

Saved successfully!

Ooh no, something went wrong!