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.

ako SICE nije detektovan. Reversing ove funkcije mozete raditi ili na ulazu unju ili na izlazu iz nje, a mozete je raditi i na sredini. Bez nekog detaljisanja(dobar deo ovoga je vec vise puta objasnjen u knjizi) precicu na moguca resenjaovog problema.1) Ako zelimo mozemo da promenimo sam pocetak:004523C4 /$ 53004523C5 |. 33DB004523C7 |. 5B004523C8 |. C3PUSH EBXXOR EBX,EBXPOP EBXRET2) Mozemo da izmenimo i samo jedan skok:0045232F |. 83F8 FF CMP EAX,-100452332 |. EB 08 JMP SHORT Debugger.0045233C00452334 |. 50 PUSH EAX ; /hObject00452335 |. E8 CE43FBFF CALL ; \CloseHandle0045233A |. B3 01 MOV BL,13) Ili mozemo da resetujemo EBX na samom kraju:0045233C 33DB XOR EBX,EBX0045233E |. 5BPOP EBX0045233F \. C3RETResenja je mnogo, mozete i sami smisliti neko. Moze se desiti da je stringkoji trazimo (\\.\SICE) maskiran ili enkriptovan u fajlu i da ne mozemo da ganadjemo. U tom slucaju mozemo ovo mesto naci pomocu API funkcijeCreateFileA koja sluzi za pravljenje “fajla” \\.\SICE. API funkcije mozemonaci tako sto cemo otvoriti Executables Module window (ALT + E) i tu uglavnom exe fajlu pronaci nasu API funkciju pod opcijom View Names (CTRL+ N). Ono na sta morate da pazite kada stavljate kondicionalni, importni iliobican break-point na API funkciju je da ce program uvek zastati u dll fajlu ukome se nalazi ta API funkcija (kernel32.dll, user32.dll itd.). Ono sto moramoda uradimo da bi smo se vratili u exe koji poziva tu API funkciju je daizvrsimo kod do prve sledece RET funkcije, posle cega cemo se vratiti u ExEkod odakle je pozvana ta funkcija.Iako je ovo standardan nacin detekcije SICEa ali postoje i drugemetode koje se zasnivaju na detekciji aktivnih procesa i otvorenih prozora.Za ovo se koriste druge API funkcije. Neke od njih mogu biti FindWindowA,FindWindowExA, Process32First, Process32Next, MessageBoxA (prikaz porukeo aktivnom debuggeru), itd. Ove zastite zaobilazite zavisno od slucaja doslucaja ali najcesce se resavaju pomocu poruke koju o aktivnom debuggerukoju programeri najcesce ostavljaju u programu. Ovo znaci da nam skoro u90% preostalih slucajeva programeri preko obicnog message boxa prikazujuporuku da program nece biti st<strong>art</strong>ovan jer je neki od debuggera aktivan.NAPOMENA: Primeticete sam u prvom primeru reversinga SICE funcije izmenio3 i 4 liniju u POP EBX i RET. Ovo RET je logicno jer ono sto se desava jejednostavno vracanje iz CALLa a ono sto moramo uraditi pre vracanje je davratimo ulazne paramerte funkcije pomocu komande POP (ulazni parametri sene moraju uvek nalaziti pre CALLa nego se mogu naci i unutar samog CALLa nanjegovom pocetku). Posto je jedini ulazni parametar EBX vracamo samo njega.Nema preterane potrebe da ovo pamtite, ovo se moze jednostavno prepisatisa kraja CALLa ali je bitno da imate na umu prilikom menjanja koda.<strong>The</strong> Art <strong>of</strong> Cracking by Ap0x Page 70 <strong>of</strong> 165

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

Saved successfully!

Ooh no, something went wrong!