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.

Stack DS:[0012FB08]=31 ('1')<br />

Njegovom selekcijom i klikom na Follow address in Dump videcemo ovo:<br />

0012FB08 31 31 31 31 31 31 31 31 11111111<br />

0012FB10 31 00 00 00 4C 10 40 00 1...L.@.<br />

Odnosno videcemo da 9 slovo u unetom serijskom broju mora biti '-'. Ponovo<br />

unosimo novi serijski broj u nasu metu samo sto sada umesto prethodno<br />

unesenog serijskog broja unosimo 11111111-11111111. Kada sada budemo<br />

stigli do poredjenja sa 2D videcemo da se ovaj JNZ skok vise ne izvrsava i da<br />

cemo nastaviti sa daljim izvrsavanjem koda, stizuci do:<br />

00401340 |. 33C3 XOR EAX,EBX<br />

00401342 |. 05 444F4F47 ADD EAX,474F4F44<br />

00401347 |. 3D 504F5453 CMP EAX,53544F50<br />

Primetite samo da se pre ovoga nas serijski broj podelio na dve celine koje se<br />

sada nalaze u registrima EAX i EBX. Posto su EAX i EBX nepromenjeni u<br />

odnosu na unetu formu zakljucujemo da program trazi unosenje serijskog<br />

broja u heksadecimalnoj formi. Da vidimo sta se dalje desava sa registrima<br />

EAX i EBX. Oni se dalje medjusobno XORuju i na vrednost EAXa se dodaje<br />

474F4F44, posle cega se EAX poredi sa 53544F50. Dakle ponovo imamo<br />

jednacinu:<br />

(Deo_serijskog_1 XOR Deo_serijskog_2) + 474F4F44 = 53544F50<br />

odnosno<br />

53544F50 - 474F4F44 = Deo_serijskog_1 XOR Deo_serijskog_2<br />

C05000C = Deo_serijskog_1 XOR Deo_serijskog_2<br />

Ali sta dalje Sada imamo dva nepoznata dela serijskog broja! To stvarno<br />

nema veze u ovom slucaju posto se ni jedan deo ne poredi direktno, vec se<br />

samo poredi rezultat jednacine od gore. Posto se serijski broj proverava na<br />

ovaj nacin postoji prakticno neogranicen broj serijskih brojeva. Ne zavisno od<br />

svega ovoga mi mozemo da pretpostavimo da je Deo_serijskog_1 =<br />

11111111 i onda imamo sledecu jednacinu:<br />

C05000C = 11111111 XOR Deo_serijskog_2, odnosno<br />

Deo_serijskog_2 = C05000C XOR 11111111.<br />

Deo_serijskog_2 = 1D14111D.<br />

Tako da je nas serijski broj jednak Deo_serijskog_1 + '-' + Deo_serijskog_2.<br />

I konacno jedan o mnogo tacnih serijskih brojeva je 11111111-1D14111D.<br />

Ostavljam vama da pronadjete jos par tacnih serijskih brojeva za ovaj level.<br />

<strong>The</strong> Serials – Fishing #7<br />

Videli smo da ni drugi level nije bio velika prepreka za nas, a sta se to nalazi<br />

u Levelu 3 ostaje nam da vidimo. Bez neke velike mudrosti pronalazimo<br />

rutinu koja se koristi za proveru levela 3, i postavljamo break-point na<br />

adresu 0040137E posle cega mozemo da unesemo lazne podatke u nasu<br />

metu. Unecemo ap0x kao ime i 111111 kao serijski broj. Posle klika na<br />

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

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

Saved successfully!

Ooh no, something went wrong!