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