You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Memory modification checkOvo je jedna retko (skoro nikada) koriscena tehnika. Ova tehnika jejako korisna kao zastita od raznih vrsta loadera, memory patchera ili bilokakve manipulacije memorijom. Ja licno nisam sreo ovu tehniku u “metama”ali nije na odmet znati kako dodatno zastititi vasu aplikaciju. Posebnonapisana aplikacija koja se nalazi ovde …\Casovi\Cas7\Memory Checker.exe.Malo uputstvo pre nego sto pocnemo sa reversingom ove aplikacije. Usamom programu cete videti 00 koje ce se posle par sekundi promeniti u broj1727. Ovaj broj predstavlja checksum vrednost zasticenjog dela koda. Svakihpar sekundi odredjeni deo koda (memorije) se proverava i ako mu jechecksum razlicit od 1727 onda ce se umesto ove poruke pojaviti poruka omodifikaciji memorije. Ova poruka ce se pojaviti samo ako modifikacijamemorije ne sadrzi ni jednu NOP komandu. Ako je deo memorije NOPovanprogram ce se sam zatvoriti. Posmatrani deo memorije je segment od 20bajtova koji sluzi za prikazivanje NAG poruke svakih 20 sekundi. Ovaj deokoda odnosno memorije moramo da promenimo tako da se ova NAG po rukane pojavljuje a da program idalje misli da je sve uredu sa sadrzajemmemorije. Ovaj zadatak iako izgleda veoma komplikovan nije toliko tezak.Uredu, pa da pocnemo. Otvorite ovu metu pomocu Ollya. Ono stomozete pokusate je da nadjete gde se to pojavljuje poruka o menjanjumemorije. Da bi smo saznali kako ova poruka izgleda moramo da prvoubijemo onu NAG poruku. Nadjimo je i postavimo jednostavnu RET komanduna adrese 004507F4 i 004507F5 ( zapamtite, ne sme biti ni jedna NOP komanda).004507F4 6A 40 PUSH 40 ASCII "Error - Modified"004507F0 . 00 ASCII 0004507F1 00 DB 00Posto ovo ne predstavlja nikakav kod nego samo referencu ka stringu (ovo sekoristi tako sto se kada zelimo da se ovaj string pojavi na ekranu funkciji zaduzenojza pojavljivanje ne prosledjujemo string nego adresu na kojoj se on nalazi),selektovacemo adresu 004507E0 i postavicemo desno dugme -> Breakpoint ->Memory, on access breakpoint na nju. Posle malo cekanja zavrsicemo ovdeusled izvrsavanje breakpointa:00404687 |. 8B1F MOV EBX,DWORD PTR DS:[EDI]00404689 |. 38D9 CMP CL,BL0040468B |. 75 41 JNZ SHORT Memory_C.004046CEOno sto sada moramo da uradimo je da izvrsimo sav kod dok se ne vratimou deo koda koji je pristupio ovoj memoriji. Sto u principu znaci da treba (u<strong>The</strong> Art <strong>of</strong> Cracking by Ap0x Page 72 <strong>of</strong> 165