The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Dakle prvo se ECX resetuje na nulu, pa mu se dodeljuje konstantna vrednost<br />
5Ah, posle cega se EAX deli sa ECX tako da se ostatak pri deljenju smesta u<br />
EDX. Ovaj ostatak pri deljenju se smesta na adresi 0040326D odakle ce<br />
kasnije biti koristen za proveru tacnosti serijskog broja. Sada trebamo videti<br />
kako se FPU komande koriste za proveru tacnosti unetih podataka.<br />
Analizirajmo taj kod kako bismo dosli do algoritma za proveru:<br />
Round(abs(cos((((24.010 / 100.000) + EDX) * 3.141593) / 180.000)) * 7479 * 100) == 313233<br />
Kao sto se vidi iz gornje jednacine samo je EDX nepoznata a ona se racuna<br />
na osnovu ostatka pri deljenju. Da bismo izracunali vrednosti koje EDX moze<br />
da ima napisacemo jednostavan Delphi program:<br />
var<br />
edx,rez:integer;<br />
begin<br />
writeln('EDX moze biti jednak:');<br />
for edx := 1 to 255 do begin<br />
rez := Round(abs(cos((((24.010 / 100.000) + EDX) * 3.141593) / 180.000)) * 7479 * 100);<br />
if rez = 313233 then writeln(edx);<br />
end;<br />
readln(rez);<br />
end.<br />
Ovaj program ce nam pokazati da EDX moze biti jednak samo 245 ili 65. Na<br />
osnovu ovoga moramo da dobijemo koliki je zbir SecData1 + SecData2 +<br />
Ime. Ovo cemo dobiti na osnovu sledece jednacine:<br />
5Ah * x + 41h = y<br />
Ovde je x proizvoljan mnozilac i za njega mozemo izabrati bilo koji broj tako<br />
da on bude priblizno jednak zbiru SecData1 + SecData2 + Ime. Posto su<br />
nam poznati podaci Ime i SecData1 i njih mozemo uvrstiti u jednacinu:<br />
(5Ah * x + 41h) – Ime – SecData1 = SecData2<br />
Dakle sada znamo tacno kako da dobijemo zbir koji imaju sva slova iz<br />
serijskog broja SecData2, ali sta posle toga Pa posto SecData2 moze imati 8<br />
ili vise slova jednostavno cemo podeliti zbir slova SecData2 sa 8,<br />
zaokruzicemo rezultat i odredicemo slovo koje smo dobili za vrednost koju<br />
smo izracunali. Ako rezultat zbira ovog novog slova bude manji ili veci od<br />
zbira koji SecData2 mora da ima jednostavno cemo izabrati neko dodatno<br />
slovo, ili cemo neko slovo oduzeti a dodati novo, tako da zbir slova bude<br />
jednak broju koji smo izracunali za SecData2.<br />
To je to ceo algoritam ove mete je detaljno analiziran i sada sami mozete bez<br />
ikakvih problema napraviti keygenerator za nju ili mozete da pronadjete<br />
tacan serijski broj za vas kompjuter. Ovo objasnjenje je dugacko iz razloga<br />
sto se provera tacnosti serijskog broja zasniva na vecem broju parametara,<br />
ali bez obzira na to smo uspesno analizirali ovu metu i matematicki izracunali<br />
tacan serijski broj za nas kompjuter. Sada shvatate zasto je vazno znati bar<br />
osnove trigonometrije :)<br />
<strong>The</strong> <strong>Art</strong> <strong>of</strong> <strong>Reversing</strong> <strong>by</strong> <strong>Ap0x</strong> Page 91 <strong>of</strong> 293