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.

0044FAB3 |. 0F85 AE000000<br />

0044FAB9 |. 8B45 F8<br />

0044FABC |. 8078 0F 5C<br />

0044FAC0 |. 0F85 A1000000<br />

JNZ crackme#.0044FB67<br />

MOV EAX,DWORD PTR SS:[EBP-8]<br />

CMP BYTE PTR DS:[EAX+F],5C<br />

JNZ crackme#.0044FB67<br />

Sledece dve provere na adresama 0044FABC i 0044FAAF su nam jako bitne.<br />

Primetite da se odredjena slova iz imena porede sa vrednoscu 5C odnosno sa<br />

karakterom ‘\’. Ovi bajtovi se nalaze na adresama 008A3701 i 008A3707.<br />

Ovo ujedno znaci da 9. i 15. slovo iz putanje do fajla moraju biti ‘\’ a ovo<br />

znaci da se fajl nalazi u dodatnim poddirektorijumima zbog cega cemo ovaj<br />

exe prebaciti u sledeci folder C:\aaaaaa\bbbba\ccccc i primeticemo da se<br />

sada nijedan JNZ skoka ne izvrsava i da cemo nastaviti sa analizom koda od<br />

adrese 0044FAC6. Dok polako izvrsavate kod videcete u donjem desnom delu<br />

CPU prozora Ollyja sledece:<br />

0012F3EC 008A2078<br />

0012F3F0 008A2064<br />

0012F3F4 008A2050<br />

0012F3F8 008A36F8<br />

ASCII "aaaaaabbbba"<br />

ASCII "bbbba"<br />

ASCII "aaaaaa"<br />

ASCII "C:\aaaaaa\bbbba\ccccc"<br />

Ono sto vidimo je da se putanja rastavlja na poddirektorijume i da se imena<br />

prvog i drugog poddirektorijuma slepljuju u jedan string. Doci cemo do<br />

sledeceg loopa koji se koristi za izracunavanje serijskog broja.<br />

0044FB13 |> /8B45 EC<br />

0044FB16 |. |0FB64408 FF<br />

0044FB1B |. |0FAF45 DC<br />

0044FB1F |. |0145 E0<br />

0044FB22 |. |41<br />

0044FB23 |. |4A<br />

0044FB24 |.^\75 ED<br />

/MOV EAX,DWORD PTR SS:[EBP-14]<br />

|MOVZX EAX,BYTE PTR DS:[EAX+ECX-1]<br />

|IMUL EAX,DWORD PTR SS:[EBP-24]<br />

|ADD DWORD PTR SS:[EBP-20],EAX<br />

|INC ECX<br />

|DEC EDX<br />

\JNZ SHORT crackme#.0044FB13<br />

Posle izvrsenja ovog loopa i par komandi ispod njega u donjem desnom delu<br />

CPU prozora cemo videti:<br />

0012F3E8 008A2090 ASCII "71757"<br />

tacan serijski broj za ovu putanju. Ispod ovoga sledi poredjenje dve<br />

vrednosti<br />

0044FB47 |. 8B45 E4<br />

0044FB4A |. 8B55 E8<br />

0044FB4D |. E8 2A4BFBFF<br />

MOV EAX,DWORD PTR SS:[EBP-1C]<br />

MOV EDX,DWORD PTR SS:[EBP-18]<br />

CALL crackme#.0040467C<br />

preostalog dela putanje “ccccc” i “71757”. Ovo znaci da krajnji folder koji<br />

smo mi nazvali “ccccc” treba da se zove “71757”. Zatvoricemo Olly i<br />

reimenovacemo ovaj direktorijum u “71757” posle cega cemo videti sledece:<br />

Ovo znaci da smo uspeli, uspesno smo pronasli resenje ovog crackmea.<br />

Interesantan je, zar ne Sada nam samo preostaje da napravimo<br />

keygenerator za ovaj crackme.<br />

Keygen:<br />

Vec smo pronasli gde se to racuna serijski broj a sada samo treba da<br />

razumemo taj isti algoritam i da ga prepisemo u nekom drugom<br />

programskom jeziku. Za ovaj primer ja cu koristiti samo Delphi. Pre nego sto<br />

pocnemo da se bavimo pravljenjem keygeneratora moracemo prvo da se<br />

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

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

Saved successfully!

Ooh no, something went wrong!