13.07.2015 Views

The art of cracking - Tutoriali

The art of cracking - Tutoriali

The art of cracking - Tutoriali

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

004265B2 . 837D FC 00...004265B8 . BA 64674200...004265CD > \817D FC 00000>CMP DWORD PTR SS:[EBP-4],0MOV EDX,CrackMe.00426764CMP DWORD PTR SS:[EBP-4],10000Kao sto vidimo u fajlu mora biti nesto zabelezeno a to nesto mora biti kraceod 0x10000h karaktera. Prvi put se u registima pojavljuje adresa koja sadrzinas uneti string na adresi 00426600.00426600 . 8DB5 FCFFFEFF LEA ESI,DWORD PTR SS:[EBP+FFFEFFFC]Izvrsavajuci kod red po red dolazimo do sledece petlje:00426616 > /8A1C16 MOV BL,BYTE PTR DS:[ESI+EDX]00426619 . |84DB TEST BL,BL0042661B . |74 29JE SHORT CrackMe.004266460042661D . |E8 16000000 CALL CrackMe.0042663800426622 . |52 PUSH EDX00426623 . |F7E3 MUL EBX00426625 . |5A POP EDX00426626 . |35 326D5463 XOR EAX,63546D320042662B . |FEC20042662D . |39CA0042662F . |74 42INC DLCMP EDX,ECXJE SHORT CrackMe.0042667300426631 . |80FA FF CMP DL,0FF00426634 . |74 3D JE SHORT CrackMe.0042667300426636 .^\EB DE JMP SHORT CrackMe.00426616Analizom dolazimo do zakljucka da se na prvoj adresi ove petlje 00426616 uregistar BL smesta hex vrednost svakog slova iz unetog stringa. Ovaj registarse koristi da bi se u EAX smestio neki broj. Mozda cak i pravi seriski broj !Primeticete da se u ovom loopu nalazi jedan CALL. Ucicemo u njega davidimo sta se tu desava:00426638 /$ 57 PUSH EDI00426639 |. 8DBD F4FFFEFF LEA EDI,DWORD PTR SS:[EBP+FFFEFFF4]0042663F |. 8B3FMOV EDI,DWORD PTR DS:[EDI]00426641 |. 881C17 MOV BYTE PTR DS:[EDI+EDX],BL00426644 |. 5F POP EDI00426645 \. C3 RETKao sto vidimo nista specijalno samo se slova iz stringa smestaju na nekiduzi string. Posto skok:0042661B . /74 29JE SHORT CrackMe.00426646vodi van gornjeg loopa, postavicemo jedan break-point na adresu na koju onvodi. Postoji jos par skokova koji vode van tog loopa ali kako vidite ovde:00426619 . 84DB TEST BL,BLtaj skok ce se izvrsiti kada se iskoriste sva slova iz unetog stringa. Takodjecemo postaviti break-point na adresu na koju vode ostala dva skoka:00426634 . /74 3D JE SHORT CrackMe.00426673Prodjimo vise puta kroz ovaj loop i videcemo da se skok ispod TEST BL,BLnikada nece izvrsiti. Hmmm... ovde nesto nevalja, jer ako se ne izvrsi ovajskok mi cemo zavrsiti na delu koji samo prikazuje poruku o pogresnomseriskom broju na ekran. Sledi pitanje: Kako da BL bude nula ???Odgovor je jednostavan: U BL se smestaju hex vrednosti slova iz unetogstringa, jedan po jedan. JE skok ce se izvrsiti samo ako je BL jednak 0x00stoga cemo pomocu Hex editora na kraj naseg stringa dodati 0x00 bajt.Posle ovoga cemo pritisnuti F9 kako bi smo nastavili sa izvrsavanje programai ponovo cemo pritisnuti Try again u crackmeu. Kada zastanemo na PUSH 0break-pointu pritisnucemo F9 2x kako bi smo dosli do ovde:00426646 > \E8 EDFFFFFF CALL CrackMe.00426638Pritsnucemo F8 4x dok ne dodjemo do ovde:<strong>The</strong> Art <strong>of</strong> Cracking by Ap0x Page 43 <strong>of</strong> 165

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

Saved successfully!

Ooh no, something went wrong!