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.
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