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.

Ovde tri tackice naravno znace neodredjeni i proizvoljni broj linija koda. Prve<br />

dve komande MOV nisu ni bitne, tu su samo da predoce neki kod. Ono sto je<br />

bitno je neka TEST provera, recimo postojanje odredjenog fajla na CDu. Ako<br />

fajl postoji onda ce se JE skok izvrsiti i EAX ce sadrzati broj 1, a ono JE<br />

no_cd_inserted se nece izvrsiti. A ako taj fajl ne postoji onda ce se izvrsiti<br />

XOR EAX,EAX sto je jednako komandi MOV EAX,0 i onda ce se onaj skok JE<br />

no_cd_inserted izvrsiti i prikazace se poruka o pogresnom CDu.<br />

Najcesce se u CALLu koji sluzi za proveru CDa mogu naci i funkcije to<br />

jest CALLovi koji sluze za proveru tipa drajva. To jest da li je drajv koji se<br />

posmatra CD-ROM, FLOPPY, HARD-DISC, DVD,... Za ovo se koristi<br />

windowsova api funkcija GetDriveTypeA. Ona glasi ovako:<br />

GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long<br />

U ASMu bi ovo izgledalo otpilike ovako:<br />

check_for_cd:<br />

...<br />

MOV ECX,03 {neke ASM funkcije, koje su nama nebitne}<br />

MOV EBX,401234{neke ASM funkcije, koje su nama nebitne}<br />

...<br />

...<br />

PUSH drive_letter<br />

CALL GetDriveTypeA<br />

CMP EAX,00000005<br />

JNE not_CD_drive<br />

...<br />

not_CD_drive:<br />

XOR EAX,EAX<br />

RET<br />

Ovde se desava sledece. Prosledjuju se potrebni parametri funkciji<br />

GetDriveTypeA, ona se poziva i vraca rezultat u EAX. Ako u EAXu nije broj 5<br />

onda skoci na deo koji brise EAX (EAX = 0) i vrati se iz ovog CALLa.<br />

Primecujete da je identifikacioni broj CD uredjaja 5. Ovo JNE se takodje<br />

moze srediti jednim NOPom. Ova funkcija nam moze mnogo pomoci pri<br />

trazenju mesta gde se proverava tip uredjaja a samim tim i da li je pravi CD<br />

ubacen. Kao sto vidite postoji vise nacina na koje mozemo srediti CD<br />

proveru, ali najjednostavniji je sredjivanje skoka odmah posle CALL<br />

check_for_cd funkije. Ovo su samo neki teorijski primeri iz moje glave. CD<br />

provera uopste ne mora a u vecini slucajeva i ne izgleda ovako, ali najcesce<br />

postoji veoma mnogo slicnosti izmedju ovoga sto sam napisao i situacija u<br />

“stvarnom svetu”.<br />

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

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

Saved successfully!

Ooh no, something went wrong!