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