13.07.2015 Views

The art of cracking - Tutoriali

The art of cracking - Tutoriali

The art of cracking - Tutoriali

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Adding functions #1Ovo poglavlje ce vas nauciti kako da dodate najobicniji NAG ekran uneki program i da se program posle toga moze st<strong>art</strong>ovati :) Pogledajteprimer CRC32.exe koji se nalazi u folderu Cas06. Primeticete da je to jedanobican CRC32 calculator i da ako ga skeniramo sa PeIDom videcemo da jepisan u Visual C++. Ova informacija je jako bitna jer se ova tehnikadodavanja funkcija moze primeniti samo na Delphi, C++ i ASM programe.Ono sto cemo mi u ovom poglavlju uraditi je dodavanje obicnog NAGekrana pre samog pocetka programa. Ovaj NAG ce biti obican Message Boxkoji ce govoriti da smo mi dodali funkciju u program. Otvoricemo programpomocu Ollya i zapamticemo kako izgleda OEP. Trebace nam samo prvih parlinija koda pa cemo ih iskopitari u Notepad. Trebaju nam ove linije:00401580 > $ 55 PUSH EBP00401581 . 8BEC MOV EBP,ESP00401583 . 6A FF PUSH -100401585 . 68 00404000 PUSH CRC32.004040000040158A . 68 88264000 PUSH CRC32.00402688Zasto smo uzeli samo ove linije??? Zato sto cemo zameniti ovaj OEP sanekom nasom komandom ali posle izvrsavanja naseg koda ovaj OEP moramoi da vratimo nazad pa smo ga backupovali.Prvo treba da nadjemo mesto gde cemo ubaciti nas NAG ekran. To mestouvek trazimo tamo gde ima puno praznih, neiskoriscenih 00 ili 90 bajtova.Posto ce nam za ubacivanje NAGa i vracanje OEPa trebati oko 50 bajtovaonda cemo mesto za ubacivanje koda traziti na kraju fajla gde po pravilu imamnogo slobodnih 00 bajtova. Kao sto vidimo od adrese 00403356 pa do00403FFF ima vise nego dovoljno mesta za ovo:00403356 00 DB 00...00403FFF 00 DB 00Tacnije ovde ima 3241 bajta slobodnog prostora. Pre ubacivanja samogMessageBoxA moramo da znamo da li se u fajlu nalazi API poziv kaMessageBoxA apiju i ako se nalazi koji su mu parametri. Mozete slobodno daodete u module i proverite da se API MessageBoxA stvarno nalazi u fajlu i dase API moze koristiti. Sama API funkcija ima sledece parametre:MessageBoxA(hwnd, Text, Naslov, MB_TIPMESSAGEBOXA);gde su:- hwd; vlasnik messageboxa, moze biti nula- Text; Tekst koji ce pisati unutar messageboxa- Naslova; Naslov prozora messageboxa- Tip; Da li je messagebox informacija ili upozorenje ili....A ovo bi u ASMu izgledalo ovako:PUSH TipPUSH NaslovPUSH TextPUSH 0CALL MessageBoxAPre nego sto unesemo ovaj CALL negde u slobodnom prostoru prvo moramoda unesemo sve tekstove koji se pojavljuju u messageboxu. Ovo radimo zatosto se u PUSH komandama za naslov i text ne nalaze ASCII vrednosti nego<strong>The</strong> Art <strong>of</strong> Cracking by Ap0x Page 60 <strong>of</strong> 165

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

Saved successfully!

Ooh no, something went wrong!