You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Posto znamo da se prilikom enkripcije koriste XOR komande ovaj deo kodamora biti vazan za ceo proces enkripcije. Primeticemo da su sadrzaji adresaEDI, EDI+4, EDI+8, EDI+C, EDI + 10, ESI Hex vrednosti ASCII kodova slovaiz passworda kojim enkriptujemo fajl. Iz ovoga zakljucujemo da je:EAX = Pass[1] xor Pass[2] xor Pass[3] xor Pass[4] xor Pass[5] xor Pass[6]gde su Pass[1..6] ASCII vrednosti 1..6 slova iz passworda. Posle ovogxorovanja vrednost iz EAX se prebacuje u ESI. Ispod ovoga sledi petlja izkoje zakljucujemo sledece:00453C01 |. 33C000453C03 |. 8A45 FF00453C06 |. 33C600453C08 |. 33449F FC00453C0C |. 4300453C0D |. 83FB 0600453C10 |. /7E 0500453C12 |. |BB 01000000|XOR EAX,EAX|MOV AL,BYTE PTR SS:[EBP-1]|XOR EAX,ESI|XOR EAX,DWORD PTR DS:[EDI+EBX*4-4]|INC EBX|CMP EBX,6|JLE SHORT encryptF.00453C17|MOV EBX,1- Na adresi 00453C03 se u AL smesta jedan po jedan karakter iz fajlaoriginal.exe (MZ....)- Na sledecoj adresi se EAX xoruje sa vrednoscu iz ESIa- Ispod ovoga se EAX horuje sa ASCII vrednoscu slova prolaza. Primeraradi ako je ovo prvi prolaz od sest mogucih (jer toliko ima slova upasswordu) EAX ce biti xorovan sa ASCII vrednoscu prvog slova izpassworda.- EBX se povecava za jedan i on predstavlja brojac prolaza- Ako je prolaz veci od 6 prolaz (EBX) ce biti resetovan na 1- Posle se EAX pretvara u ASCII slovo koje se zapisuje u novi fajlOvaj loop ce se ponavljati 4096 puta jer toliko bajtova ima originalni fajl. Kaosto se vidi enkripcija se vrsi na svakih 6 bajtova a onda se postupakponavlja. To jest prvi bajt se xoruje sa ESIjem i sa ASCII vrednoscu prvogslova, drugi bajt sa drugim, a kada brojac slova predje sest, to jest dodje dosedam onda se on resetuje i krece ponovo od jedan. Tako ce sedmi bajt bitixorovan sa ESIjem i sa ASCII vrednosu prvog karaktera. Na osnovu detaljakoje smo saznali mozemo napraviti deo algoritma za bruteforceing. Prepisanja algoritma moramo da znamo unapred kako cemo ga napisati.Najjednostavniji nacin je da dekriptujemo samo 6 prvih bajtova iz originalnogfajla i da ih uporedimo sa bajtovima iz neenkriptovanog fajla. Zasto uzimamoprvih sest bajtova ??? Prosto posto se enkripcija ponavlja svakih sestbajtova, prvi i sedmi bajt ce biti enkriptovani na isti nacin.Kada konstruisemo algoritam prvo moramo da definisemo tablicu slovakoja ce biti koristena da se od njih napravi password. Ova tablica je velika 26karaktera i sadrzi sva velika slova od A-Z. Posto imamo sest karaktera kojicine password moramo imati i sest petlji od 1 do 26 koje se ponavljaju jednaunutar druge. Zasto ovo radimo ??? Jer se kombinacije koje prave passwordkrecu od AAAAAA pa do ZZZZZZ menjajuci pri tome zadnje slovo 26 puta, akada zadnje slovo dodje do 27 onda se krece ispocetka i umesto 27 slovakoristi se 1 slovo, slovo A, dok se drugo A od kraja povecava za jedan ipostaje B. Tada ce kombinacija izgledati ovako AAAABA.Ono sto mi moramo da proverimo je da li je xorovana vrednost svihslova iz passworda (ESI) xorovana slovom passworda (Pass[i]) koje se<strong>The</strong> Art <strong>of</strong> Cracking by Ap0x Page 104 <strong>of</strong> 165