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.

Ono sto nam je bitno je da pronadjemo skokove sa kojih se dolazi do<br />

bad boy poruke. Ovo je jako bitno jer se ova vrsta uslovnih skokova izvrsava<br />

samo posle nekog poredjenja, a to poredjenje je najcesce poredjenje<br />

serijskih brojeva, t.j. poredjenje unetog serijskog broja i tacnog serijskog<br />

broja. Iz ovog razloga, da bi program imao sta da poredi, unose se lazni,<br />

netacni serijski brojevi u cilju pronalaska tacnih serijskih brojeva.<br />

Ovo je jedna cinjenica koju morate da znate, a druga takodje jako<br />

bitna je da se veoma cesto poredjenje serijskih brojeva i poruke o<br />

tacnosti, t.j. netacnosti unetog serijskog broja nalaze u istom CALLu. Ova<br />

cinjenica ce nam pomoci da pronadjemo gde i kako se to racuna serijski broj.<br />

Za sada je potrebno da izolujemo celinu u kojoj se racuna serijski broj, to<br />

jest da sagledamo ceo ovaj CALL. Ovo cemo uraditi jednostavnim scrollom<br />

na pocetak ove celine, to jest CALLa, koji pocinje bas ovde:<br />

0040141C /$ 51<br />

PUSH ECX<br />

0040141D |. 52<br />

PUSH EDX<br />

0040141E |. 6A 28 PUSH 28 ; /Count = 28<br />

00401420 |. 68 70324000 PUSH dumped_.00403270 ; |Buffer = 00403270<br />

00401425 |. FF35 1A324000 PUSH DWORD PTR DS:[40321A] ; |hWnd<br />

0040142B |. E8 E4010000 CALL ; \GetWTextA<br />

00401430 |. A3 FE314000 MOV DWORD PTR DS:[4031FE],EAX<br />

00401435 |. 833D FE314000> CMP DWORD PTR DS:[4031FE],20<br />

0040143C |. 0F85 8F010000 JNZ dumped_.004015D1<br />

Kao sto se vidi sa pocetka ovog CALLa program ce uzeti podatke iz<br />

polja za unos pomocu API funkcije GetWindowTextA. Ovo je jako bitno<br />

da zapazite, to jest bitnije je da vidite na kojoj ce se adresi snimiti<br />

procitani tekst iz polja za unos. Ovaj podatak koji se prosledjuje<br />

GetWindowTextA APIju je oznacen kao buffer i sadrzi adresu 00403270 na<br />

kojoj ce biti snimljen sadrzaj polja za unos.<br />

Na ovoj adresi ce se nalaziti tekst, kome ce meta dalje pristupati<br />

pomocu reference ka njemu, to jest preko njegove adrese. Isto kao sto ceo<br />

tekst ima adresu na kojoj se nalazi, tako i svako slovo unetog teksta ima<br />

svoju adresu. U stvari adresa celog teksta predstavlja adresu ka prvom<br />

slovu unetog teksta. Stoga cemo potraziti operacije koje se odnose na<br />

adresu 00403270. Takve operacije cemo naci ovde:<br />

00401442 |. BB 70324000 MOV EBX,dumped_.00403270<br />

00401447 |. 0FBE03 MOVSX EAX,BYTE PTR DS:[EBX]<br />

0040144A |. 83F8 34<br />

CMP EAX,34<br />

0040144D |. 0F85 7E010000 JNZ dumped_.004015D1<br />

00401453 |. 43 INC EBX<br />

00401454 |. 0FBE03 MOVSX EAX,BYTE PTR DS:[EBX]<br />

00401457 |. 83F8 44 CMP EAX,44<br />

0040145A |. 0F85 71010000 JNZ dumped_.004015D1<br />

00401460 |. 43 INC EBX<br />

Kao sto vidimo prvo se sadrzaj adrese 00403270 smesta u registar EBX.<br />

Ali pazite ne smesta se u EBX sadrzaj adrese 00403270, nego se smesta<br />

referenca ka adresi, a sam EBX se koristi kao pointer ka tekstu. U<br />

slucaju kada je EBX jednak 00403270 on vodi do prvog slova unetog teksta,<br />

sto ce biti iskorisceno vec na sledecoj adresi, na kojoj ce se u EAX<br />

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

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

Saved successfully!

Ooh no, something went wrong!