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.

odredjuje pomocu brojaca (I) i xorovana ASCII vrednoscu prvog bajta iz<br />

enkriptovanog fajla jednaka 4D hex ili M u ASCII obliku. Ako je ovo ispunjeno<br />

provericemo da li je drugi bajt jednak 5A hex ili Z u ASCIIju. Sta sve ovo<br />

znaci Ovo znaci da cemo prepisati prvih 6 bajtova iz originalnog fajla<br />

(4D5A90000300) i da cemo jednacinu postaviti ovako:<br />

Da li je 10h xor ESI xor ASCII(A) = 4D<br />

Da li je 03h xor ESI xor ASCII(A) = 5A<br />

Da li je C0h xor ESI xor ASCII(A) = 90<br />

Da li je 4Dh xor ESI xor ASCII(A) = 00<br />

Da li je 5Fh xor ESI xor ASCII(A) = 03<br />

Da li je 5Ah xor ESI xor ASCII(A) = 00<br />

gde je 10h prvi bajt iz enkriptovanog fajla (prvih 6 bajtova iz enkriptovanog<br />

fajla encrypted.exe 1003C04D5F5A), ESI sadrzaj ESI registra, a ASCII(A) je<br />

ASCII vrednost prvog slova iz pretpostavljenog passworda. Pretpostavljeni<br />

password za prvi prolaz je AAAAAA, za drugi prolaz je AAAAAB, za treci je<br />

AAAAAC, itd... sve dok se ne dodje do ZZZZZZ. Ovo radimo ovako zato sto<br />

pokusavamo da dekriptujemo bajtove iz enkriptovanog fajla pomocu<br />

xorovanja enkriptovanog bajta sa vrednoscu ESIja i vrednoscu slova prolaza,<br />

ako je dobijena vrednost jednaka neenkriptovanoj onda moguce da je<br />

pretpostavljeni password tacan. Da bi sve ovo bilo jasnije pogledajte sledecu<br />

tabelu:<br />

Password ESI Prolaz Slovo / ASCII Enkriptovano Rez. Original<br />

ABCDEF 7 1 A / 65 / 41h 10h / 16 86 77<br />

ABCDEF 7 2 B / 66 / 42h 03h / 03 70 90<br />

ABCDEF 7 3 C / 67 / 43h C0h / 192 132 144<br />

ABCDEF 7 4 D / 68 / 44h 4Dh / 77 14 0<br />

ABCDEF 7 5 E / 69 / 45h 5Fh / 95 29 3<br />

ABCDEF 7 6 F / 70 / 46h 5Ah / 90 27 0<br />

- Kolona ESI se dobija ASCII(A) xor ASCII(B) xor ASCII(C) xor.... ASCII(F)<br />

- Prolaz je brojac koji se koristi za odabiranje slova iz passworda<br />

- Kolona enkriptovano sadrzi prvih 6 bajtova iz encrypted.exe fajla<br />

- Rezultat je: kolona ESI xor ASCII iz istog reda xor Enkriptovano<br />

Primer: 7 xor 65 xor 16 = 86<br />

- Posto 86 nije jednako originalnom bajtu 77 (4Dh) ovaj pretpostavljeni<br />

password nije tacan pa se ostali prolazi ne moraju ni proveravati. Preci<br />

cemo samo na sledeci password ABCDEG i pokusacemo sa njim.<br />

Sada znamo sve sto nam treba kako bismo napisali algoritam u nekom<br />

programskom jeziku. Ono sto moramo da napravimo je da napisemo<br />

algoritam koji ce generisati sve moguce passworde (od AAAAAA-ZZZZZZ) i<br />

proveravati da li je pretpostavljen serijski broj tacan ili ne. Provera se vrsi<br />

bas onako kako je opisano u tablici iznad. Ja sam napravio jedan jako dobar<br />

primer u VB kako se to moze napisati jedan bruteforcer. Ovaj primer naravno<br />

nije optimizovan i posle par sekundi bruteforceovanja program ce prikazivati<br />

da je “zakucao” ali nije, on u pozadini radi svoj posao sto brze moze. Dajte<br />

mu vremena i on ce zavrsiti svoj posao, kad tad. Ovo moze mnogo da<br />

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

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

Saved successfully!

Ooh no, something went wrong!