The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
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