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.

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

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

Saved successfully!

Ooh no, something went wrong!