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

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

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

Saved successfully!

Ooh no, something went wrong!