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.

KeyGen – Beginning #4<br />

A sada nesto malo komplikovanije, pokusacemo da napravimo<br />

keygenerator za nasu “metu” u dva programska jezika. Mislim da su ova dva<br />

programska jezika uobicajena i da njih zna najveci deo citalaca ove knjige,<br />

stoga su programski jezici koji ce biti obradjivani u knjizi biti Visual Basic i<br />

Delphi.“Meta” ce biti ista kao i u proslom poglavlju. Ucitajte program<br />

…\Casovi\Cas4\Serial2.exe u Olly. Kao sto smo u proslom poglavlju utvrdili<br />

serijski broj se generise u petlji koja pocinje na adresi 00407D83. Ono sto<br />

cemo sada uraditi je sledece:<br />

1) izvojicemo ovaj deo koda za analizu<br />

2) pokusacemo da ponovo napisemo ovaj algoritam u nekom drugom<br />

programskom jeziku<br />

Evo kako izgleda ta petlja izdvojena:<br />

00407D83 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]<br />

00407D86 8A4430 FF MOV AL,BYTE PTR DS:[EAX+ESI-1]<br />

00407D8A 34 2C XOR AL,2C<br />

00407D8C 25 FF000000 AND EAX,0FF<br />

00407D91 03C0 ADD EAX,EAX<br />

00407D93 8D0480 LEA EAX,DWORD PTR DS:[EAX+EAX*4]<br />

00407D96 05 00040000 ADD EAX,400<br />

00407D9B 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]<br />

00407D9E E8 9DD5FFFF CALL Serial2.00405340<br />

00407DA3 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]<br />

00407DA6 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]<br />

00407DA9 E8 7EBAFFFF CALL Serial2.0040382C<br />

00407DAE 46 INC ESI<br />

00407DAF 4B DEC EBX<br />

00407DB0 75 D1 JNZ SHORT Serial2.00407D83<br />

Analizirajmo polako prolazak kroz ovu petlju. Treba da vam je ukljucen Olly,<br />

da ste postavili break-point na adresu 00407D83, i da ste kao ime u “metu”<br />

uneli ap0x, serijski broj nije bitan.<br />

Prvi od pet prolaz:<br />

00407D83 Pri prvom prolazu kroz petlju u EAXu na adresi 00407D83 se nalazi<br />

broj 4, a posle izvrsenja koda na adresi 00407D83 nalazi se nase uneto ime<br />

to jest ap0x.<br />

00407D86 Ovde se u AL stavlja nulti karakter stringa “ap0x”. Kao sto<br />

primecujete slovo a je prvi karakter. Sta je onda nulti karakter Nulti<br />

karakter je isti za sve stringove i iznosi 00h ili samo 0. Uvek je isti.<br />

00407D8A Ovde se izvrsava obicna XOR operacija nad registrom AL sa<br />

vrednoscu 2Ch ili 44.<br />

00407D8C Ovde se izvrsava logicko dodavanje 0FFh odnosno 255 na<br />

vrednosti EAX. Ovo je obicno svodjenje sa velikih hex brojeva na manje.<br />

Shvatite to ovako: ako je EAX 0085005C onda ce posle ovog logickog<br />

dodavanja rezultat biti 5C. Posto je posle izvrsenja ove komande EAX jednak<br />

registru AL ova komanda je nepotrebna i necemo je koristiti u keygenu.<br />

00407D91 Na ovoj adresi se desava obicno matematicko sabiranje vrednosti<br />

iz EAXa sa samom sobom.<br />

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

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

Saved successfully!

Ooh no, something went wrong!