The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
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