You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Making an inline patchKao sto je vec objasnjeno loaderi se koriste kada zelimo da napravimopatch za pakovane ili kriptovane programe. Njih je veoma lako napraviti aliposto u vecini slucajeva nisu pouzdani koristicemo klasicne patcheve napakovanim programima. Zvuci li interesantno??? Program specijalno pisan zapotrebe ovog poglavlja se nalazi u folderu Cas11 a zove se NAG.exe.Otvoricemo ovaj fajl pomocu Ollya da bi smo nasli mesto koje treba dapatchujemo. Da bi smo nasli mesto koje treba da patchujemo, prvo cemoodpakovati program i nacicemo bajt koji zelimo da patchujemo. Sam NAG senalazi ovde:00407F1F /74 19JE SHORT NAG_exe_.00407F3A00407F21 |6A 40 PUSH 4000407F23 |68 507F4000 PUSH NAG_exe_.00407F50 ; ASCII "NAG:"00407F28 |68 587F4000 PUSH NAG_exe_.00407F58 ; ASCII "Ovo je NAG screenkoji treba da ubijete !!!"00407F2D |53PUSH EBX00407F2E |E8 B5C6FFFF CALL Ocigledno je da treba samo da patchujemo skok JNZ u JMP, to jest sa 74 uEB. Potrebni podaci za inline patch su adresa 00407F1F i vrednost sa kojomcemo da patchujemo. Potrebno je samo da nadjemo mesto gde cemo dapatchujemo. Ovo moramo da uradimo tik posle sto se program odpakuje. Prenego sto skoci na sam OEP. Stoga cemo prepraviti skok ispod donje POPADkomande UPX pakera tako da nas preusmeri na kod za patchovanje. Evokako bi to trebalo da izgleda (narandzasti su izmenjeni / dodati redovi)0041291E > \61POPAD0041291F . EB 14JMP SHORT NAG2.0041293500412921 90 NOP00412922 90 NOP00412923 90 NOP00412924 3C294100 DD NAG2.0041293C00412928 44294100 DD NAG2.004129440041292C 08A74000 DD NAG2.0040A70800412930 00 DB 0000412931 00 DB 0000412932 00 DB 0000412933 00 DB 0000412934 00 DB 0000412935 C705 1F7F4000> MOV DWORD PTR:[407F1F],019EB0041293F .- E9 B056FFFF JMP NAG2.00407FF4Vidite sta se desava. Izmenili smo skok tako da on vodi ka delu zapatchovanje, posle cega se sa starim UPX skokom vracamo na OEP.Primeticete oblik komande za patchovanje memorije:MOV DWORD PTR:[407F1F],019EBMislim da je jasno sta ovde radimo. Na adresu 00407F1F cemo ubacitibajtove EB19. Primetite samo da su bajtovi u obrnutom redosledu, prvo ide19 pa EB, a uvek ce im predhoditi nula ako patchujete pomocu Ollya. Bitno jeda zapamtite da ako nema mesta za dodavanje bajtova odmah iza patcherkoda, morate osloboditi mesto negde pomocu nekog Hex Editora. Ovajpostupak je vec objasnjen kod dodavanja funkcija tako da nema potrebe daovo ponovo objasnjavam.<strong>The</strong> Art <strong>of</strong> Cracking by Ap0x Page 151 <strong>of</strong> 165