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.

“Not Getting Caught :)” - ExereciseAko niste primetili pored primera …\Casovi\Cas7\Debugger check.exepostoji i primer …\Casovi\Cas7\Debugger Check2.exe. Ovaj drugi je napravljenda bude vezba za izbegavanje detekcije debuggera. Ako ste pazljivo citaliprvi i drugi deo ovog poglavlja bez problema cete zaobici sve ove zastite iresicete uspesno i ovu vezbu. Pokusajte sami da resite ovaj problem a ako nebudete mogli vratite se ovde da utvrdite gradivo.Resenje:Ako citate ovaj deo predpostavljam da niste sami mogli da seoslobodite provere debuggera u primeru. Predpostavljam da ste krenulilogickim redosledom tako sto ste zapamtili poruku o detektovanomdebuggeru i probali ste da je potrazite u fajlu. Ali, desilo se nesto jako cudno,nema takve niti bilo kakve slicne poruke u fajlu :) Ono sto sam namernouradio za ovu vezbu je ekripcija stringova unutar samog fajla. To znaci da sustringovi idalje tu samo nisu isti u fajlu i u memoriji. Ovo znaci da sestringovi pre upotrebe dekriptuju u svoj pravi oblik. Naravno vi ne znatekakav sam ja algoritam koristio za enkripciju stringova tako da nikako nemozete znati kako koja poruka izgleda enkriptovana. Ono sto cemo mi uraditije veoma jednostavno, koristicemo drugi metod za pronalazak mesta gde seproverava da li je program otvoren uz pomoc debuggera. Trazicemo ovamesta pomocu API poziva. Otvoricemo ovaj program uz pomoc Ollya ipostavicemo break-point na MessageBoxA API posto se pomocu njegaprikazuje poruka o aktivnom debuggeru. Ovo se radi u Executable modulima(ALT + E), pod opcijom View Names (CTRL + N); Toggle break-point onimport, ako ste zaboravili. Sada pokrenimo ovaj primer i sacekajmo daprogram dodje do break-pointa. Uklonimo ovaj break-point pritiskom na F2.Posto se nalazimo u dll fajlu sa F8 cemo izvrsavati kod polako dok nedodjemo do RET komande i dok se i ona ne izvrsi. Sada, kada smo se vratiliiz funkcije, nalazimo se na adresi 00450D7F. Ovo izgleda kao funkcija kojaprikazuje poruku o prisustvu debuggera. Ovo cemo ukloniti jednostavnimpostavljanjem obicne RET komande na adresi 00450D44. Resetujmo programsa CTRL + F2 i izmenimo adresu 00450D44 u RET (C3). St<strong>art</strong>ujmo program ividecemo da se poruka opet pojavila. Hmmm. Resetujmo program opet,izmenimo adresu 00450D44 i postavimo opet break-point na MessageBoxA.Program je opet stao u nekom dll-u i posle izvrsavanja RET komandevraticemo se u deo koda koji poziva MessageBoxA API. Sada se nalazimo naadresi 00450847. Hmmm ovaj CALL izgleda isto kao onaj koji pocinje naadresi 00450D44. Da li postoje dve vrste provere ? Zapamtimo dve adrese00450D44 i 0045080C posto su one pocetne adrese ovih CALLova.Resetujmo program sa CTRL + F2 i pomocu Go To adress opcije (prvo dugmena levo pored dugmeta L u toolbaru) oticemo na obe ove adrese. Kada odemona prvu i selektujemo je videcemo detalje o njoj:Local call from 00450DEDOvo znaci da se ovaj CALL poziva samo sa adrese 00450DED. A kada odemona adresu 0045080C videcemo sledece:<strong>The</strong> Art <strong>of</strong> Cracking by Ap0x Page 78 <strong>of</strong> 165

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

Saved successfully!

Ooh no, something went wrong!