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.

pozabavimo samim algoritmom da bismo saznali sto je vise moguce o<br />

samom algoritmu. Evo kako izgleda deo koda koji sluzi za generisanje tacnog<br />

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

Objasnicemo sta se ovde desava red po red.<br />

- Prvo se na adresi 0044FB13 u EAX smestaju imena prva dva<br />

direktorijuma dodata jedno na drugo.<br />

- Na adresi 0044FB16 se u EAX smesta jedno po jedno slovo stringa<br />

dobijenog sabiranjem imena foldera. EAX sadrzi hex vrednost ASCIIja<br />

tog slova a ne sam ASCII !!!<br />

- Potom se EAX mnozi sa sadrzajem adrese EBP-24. Da bismo saznali sa<br />

cime se to mnozi EAX selektovacemo sledeci red sa ekrana:<br />

Stack SS:[0012F3DC]=00000043<br />

EAX=0000004C<br />

i pritisnucemo desno dugme -> Follow in dump... sto ce nas odvesti<br />

ovde:<br />

0012F3DC 43 00 00 00 00 00 00 00 C.......<br />

kao sto vidimo EAX se mnozi sa ASCIIjem slova uredjaja na kojem se<br />

nalazi crackme (e.g. C:\, D:\,...)<br />

- Na adresi 0044FB1F se na sadrzaj adrese EBP-20 dodaje vrednost<br />

EAXa. Posto je u prvom prolazu EBP-20 jednak nuli zakljucujemo da ce<br />

se ovde naci rezultat svih sabiranja EAXa + EBP-20.<br />

- Ostali redovi nam samo govore koliko ce se puta izvrsiti ovaj loop. Taj<br />

broj je jednak duzini stringa koji se dobije dodavanjem imena dva<br />

foldera jednog na drugo.<br />

Mislim da je sada svima jasno kako treba napraviti keygen. Prvo treba uneti<br />

dva bilo koja imena foldera tako da je duzina prvog imena foldera sest a<br />

drugog pet. Posle ovoga koristeci formulu iz loopa treba odrediti ime treceg<br />

podfoldera koji ce se sastojati samo od brojeva. Ovaj algoritam ce izgledati<br />

bas ovako:<br />

var<br />

drv,nrd:string;<br />

i,tmp,eax:integer;<br />

begin<br />

Drv := ComboBox1.Text;<br />

nrd := '';<br />

for i := 1 to 11 do begin<br />

nrd := nrd + Chr(65 + Random(25));<br />

end;<br />

tmp := 0;<br />

eax := 1;<br />

for i := 1 to length(nrd) do begin<br />

eax := Ord(nrd[i]);<br />

eax := eax * ord(Drv[1]);<br />

tmp := tmp + eax;<br />

end;<br />

nrd := Drv + nrd[1] + nrd[2] + nrd[3] + nrd[4] + nrd[5] + nrd[6] + '\' + nrd[7] + nrd[8] +<br />

nrd[9] + nrd[10] + nrd[11] + '\' + IntToStr(tmp);<br />

Edit1.Text := nrd;<br />

Ceo source i kompajlovani .exe fajl se nalaze u folderu ..\Cas12\KeyGen\<br />

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

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

Saved successfully!

Ooh no, something went wrong!