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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ReEnable buttons - API<br />

Ovaj deo poglavlja ce vas nauciti kako da pronadjete tacno mesto<br />

odakle se iskljucuju / ukljucuju opcije. Naravno posto je Micros<strong>of</strong>t-ova<br />

dokumentacija veoma obimna spisak svih raspolozivih API funkcija nije ni<br />

malo lako prelistati i naci ono sto vam treba. Naravno kao i svaki drugi<br />

veoma nestrpljivi cracker odlucio sam da batalim API reference i da nadjem<br />

neki prakticni primer kojim cu lako otkriti kako se to iskljucuju / ukljucuju<br />

dugmici, meniji, formovi i sl... Slucajno sam pri ruci imao savrsen primer za<br />

ovaj problem. Primer …\Casovi\Cas8\editor.exe izgleda ovako:<br />

Kao sto se vidi na ovoj<br />

slici u pitanju je jos jedan<br />

NAG ekran koji treba<br />

ukloniti. Jedina prednost<br />

ovog primera nad svim<br />

drugima je to sto on ima<br />

iskljuceno dugme koje se<br />

posle deset sekundi<br />

ukljuci propustajuci vas<br />

dalje u program. Ovo je<br />

bitna karakteristika koju<br />

cemo iskoristiti da bismo<br />

nasli koja je to API<br />

funkcija zaduzena za<br />

ukljucivanje tog dugmeta.<br />

Da bismo ovo uradili<br />

mozemo da koristimo dva<br />

nacina: laksi nacin i moj<br />

nacin :) Jedini problem sa<br />

laksim nacinom je da on<br />

pretpostavlja da znate API funkcije koje se koriste za simuliranje tajmera. To<br />

jest da znamo kako to program napravi pauzu od 10 sekundi, a ako vam ovo<br />

nije poznato mozete uvek da koristite moj nacin :)<br />

Nacin 1:<br />

Laksi nacin pronalaska mesta odakle se poziva funkcija koja ukljucuje<br />

iskljuceno dugme je da postavimo break-point na svaku referencu ka API<br />

funkcijama koje sluze za pravljenje tajmera i / ili pauziranje programa. Ovo<br />

rade dve API funkcije: kernel32.Sleep i user32.SetTimer pa cemo pronaci<br />

koja se od ove dve koristi u ovom primeru. Preko Ollyja pogledajte koji se to<br />

importi nalaze u module -> names prozoru. Od ove dve spomenute funkcije<br />

pronaci cete samo API SetTimer. Naravno da se vreme moze pronaci i preko<br />

drugih APIja kao sto su GetLocalTime, GetSystemTime i slicnih ali je najbrze<br />

preko SetTimer APIja. Dakle postavimo break-point on every reference na<br />

ovaj API i onda startujmo program. Program ce zastati na adresi 00401253<br />

odakle se poziva SetTimer API. Ako odskrolujemo malo gore i pregledamo<br />

ceo ovaj CALL videcemo kako se to startuje timer i mozda cemo naci API<br />

funkciju koja ukljucuje dugme. Ono sto vidimo prikazano je na sledecoj slici:<br />

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

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

Saved successfully!

Ooh no, something went wrong!