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.

Prvo sto treba da uradimo je da da sve simbole iz crc32table.txt<br />

pretvorimo u ASCII kodove. U ovom slucaju je ovo jako tesko izvesti, jer su<br />

slova prilicno ne standardna, pa cemo napraviti program koji ce to uraditi za<br />

nas. Kod Visual Basic programa koji to radi bi izgledao bas ovako:<br />

Text2.Text = ""<br />

for i = 1 to Len(Text1.Text)<br />

Text2.Text = Text2.Text & Asc(Mid$(Text1.Text,i,1))<br />

if i < Len(Text1.Text) then Text2.Text = Text2.Text + “,”<br />

next i<br />

Text2 sadrzi rezultat a Text1 sadrzi string za koji se racuna ASCII. Gotov<br />

primer se nalazi u istom folderu pod imenom ascii.exe. Otvorimo ovaj<br />

program i u njega unesimo string iz fajla crc32table.txt. Ono sto ce program<br />

pokazati je:<br />

27,111,111,20,25,25,30,25<br />

Sada treba da patchujemo program crc32.exe i snimimo patchovan program<br />

kao new.exe. Patchovacemo 00450E88 adresu u ovo:<br />

00450E88 C3 RET<br />

00450E89 90 NOP<br />

Reimenujte originalni crc32.exe u crc32_1.exe, a new.exe u crc32.exe. Sada<br />

cemo pomocu getCRC32.exe dobiti CRC vrednost fajla crc32.exe (new.exe<br />

fajla) fajla, dobicemo novi CRC koji iznosi 0D2541F9 (zapamtite CRC mora imati<br />

8 cifara). Sada cemo i ovaj CRC pretvoriti u ASCII pomocu ascii.exe-a.<br />

Dobicemo ovo:<br />

48,68,50,53,52,49,70,57<br />

Pored ovog nam je poteban i ASCII kod originalnog crc32.exe fajla, koji se<br />

trenutno zove crc32_1.exe. Posto znamo da ovaj CRC iznosi 7CC85525, i<br />

njega cemo pretvoriti u ASCII. To izgleda ovako:<br />

55,67,67,56,53,53,50,53<br />

Sada treba da otkrijemo kako treba da enkriptujemo novu CRC vrednost -<br />

0D2541F9. Za ovo su nam potrebna dva podatka. ASCII enkriptovanog CRCa<br />

i ASCII samog CRCa. Ovi podaci su:<br />

27,111,111,20,25,25,30,25 i 55,67,67,56,53,53,50,53<br />

Ono sto je bitno da se svaka prosta a i komplikovana enkripcija zasniva na<br />

obicnom XOR-ovanju. Ovo znaci da je ASCII kod jednog karaktera<br />

enkriptovan (xorovan) nekom vrednoscu i tako je dobijena nova ASCII<br />

vrednost. Mi treba da saznamo kojom vrednoscu je XORovan svaki karakter<br />

originalnog CRCa - 7CC85525 kako bi bio dobijen enkriptovani string koji se<br />

nalazi u crc32table.txt fajlu. Ovo cemo dobiti reversnim xorovanjem, to jest<br />

uporedjivanjem enkriptovanog stringa i neenkriptovanog originalnog CRCa<br />

crc32.exe fajla. Znaci 27 xor = 55, 111 xor = 67,... Ono sto je bitno kod xor<br />

funkcije je da je ona reverzibilna to jest da je x xor y = z ali i da je z xor x = y i z<br />

xor y = x, i tako cemo otkriti vrednost . Znaci 55 xor 27 = 44, 67 xor 111 = 44,... i<br />

tako smo dobili magicnu xor vrednost za svako slovo CRCa. Sada treba samo<br />

da enkriptujemo novi CRC pomocu vrednosti 44, i da dobijenu ASCII<br />

vrednost pretvorenu u slova i simbole snimimo u crc32table.txt fajl. Ovo<br />

cemo uraditi pomocu novog programa koji cemo sami napisati. Evo kako to<br />

izgleda u Visual Basicu:<br />

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

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

Saved successfully!

Ooh no, something went wrong!