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.
Deo_serijskog_broja_1 = 53544F50 XOR 25353D12<br />
Deo_serijskog_broja_2 = 52554C45 XOR 73746D2A<br />
A ovo mozemo da izracunamo:<br />
Deo_serijskog_broja_1 = 76617242<br />
Deo_serijskog_broja_2 = 2121216F<br />
Ostaje nam jos samo da pretvorimo ove heksadecimalne brojeve u string koji<br />
se unosi. Srecom po nas HexDecChar ovo moze da uradi mnogo brze od nas i<br />
stoga u njemu izabiramo mod 2 umesto moda 1 jer pretvaramo ceo sadrzaj<br />
registra u string. Kada paste-ujemo Deo_serijskog_broja_1 kao Char ce se<br />
pokazati string varB. Ali posto su registri uvek invertovani moramo da<br />
uradimo i invert register, ondnosno klikom na zelenu strelicu dobijamo<br />
umesto varB, string Brav. A kada isti postupak uradimo i za<br />
Deo_serijskog_broja_2 dobijamo string o!!!. Dakle ceo seriski je<br />
Deo_serijskog_broja_1 + Deo_serijskog_broja_2 = Bravo!!!. Konacno kad<br />
unesemo tacan serijski broj u metu dobijamo odgovor Level 1 ComplAted!!!<br />
Predjimo sada na Level 2.<br />
<strong>The</strong> Serials – Fishing #6<br />
Posto smo sa izuzetnom lakocom resili Level 1, vreme je da predjemo na<br />
Level2, koji donosi par novina. Dakle ponovo cemo kao i za prvi Level pronaci<br />
gde se to porede uneti i tacan serijski broj. Ovo cemo uraditi pomocu string<br />
referenci, kao i prosli put:<br />
Text strings referenced in Crackme1:.text, item 8<br />
Address=00401355<br />
Disassembly=PUSH Crackme1.00403012<br />
Text string=ASCII "Level 2 Complated"<br />
Duplim klikom na ovaj string dolazimo ovde:<br />
00401355 |. 68 12304000 PUSH Crackme1.00403012 ; |Text = "Level 2 Complated"<br />
Kao i prosli put skrolujemo do samog pocetka CALLa i postavljamo breakpoint<br />
na 00401309 posle cega u nasu metu unosimo lazni serijski broj<br />
111111 i pritiskamo dugme Register. Ovo nam zaustavlja izvrsavanje nase<br />
mete i stavlja nas na nas break-point. Posto se sada nalazimo gde treba<br />
mozemo da tracujemo kroz kod sa F8. Ovo radimo sve dok ne dodjemo do<br />
sledece adrese:<br />
0040131D |. 83F8 11<br />
CMP EAX,11<br />
00401320 |. 75 44 JNZ SHORT Crackme1.00401366<br />
Posto se ova provera CMP EAX,11 nalazi odmah ispod GetWindowTextA API<br />
poziva zakljucujemo da je potrebna duzina serijskog broja 11h odnosno 17<br />
karaktera. Stoga umesto 111111 kao serijski broj unosimo<br />
11111111111111111. Ponovo zastajemo kod naseg break-pointa i tracujemo<br />
kroz kod sve do JNZ skoka koji se ovaj put ne izvrsava! Tracujemo dalje sve<br />
dok ne dodjemo do:<br />
00401325 |. 807E 08 2D CMP BYTE PTR DS:[ESI+8],2D<br />
00401329 |. 75 3B JNZ SHORT Crackme1.00401366<br />
Sada vidimo da se jedan bajt poredi sa 2D, odnosno sa karakterom '-'. Ako<br />
pogledamo malo ispod CPU windowa videcemo sledeci tekst:<br />
<strong>The</strong> <strong>Art</strong> <strong>of</strong> <strong>Reversing</strong> <strong>by</strong> <strong>Ap0x</strong> Page 70 <strong>of</strong> 293