實(shí)戰(zhàn)代碼注入技術(shù) |
發(fā)布時(shí)間: 2012/7/28 18:42:14 |
實(shí)際上就是創(chuàng)建遠(yuǎn)程線程,不同的是普通的辦法都是 使用 LoadLibrary 函數(shù),讓其加載我們的dll然后將我們的代碼寫到dllmain 函數(shù)里面,已達(dá)到執(zhí)行我們自定義代碼的目的,那么能不能讓目標(biāo)程序加載我們的dll 并且調(diào)用這個(gè)dll的導(dǎo)出函數(shù)里,這個(gè)就要用到代碼注入的技術(shù)了,和shellcode 很像,先寫段匯編代碼 我們的shellcode 將使用 LoadLibrary 和 GetProcAddress 函數(shù)來加載一個(gè)dll 和調(diào)用dll的導(dǎo)出函數(shù),這里有個(gè)問題就是雖然Library,GetProcAddress函數(shù)我們使用shellcode的時(shí)候可以將其更改為正確的函數(shù)地址,但是dll的名字還有導(dǎo)出函數(shù)的名字,如何在代碼中動態(tài)的獲取呢?這里就要用到代碼自定位技術(shù)了。很簡單 這樣就定位到了 ret 這條指令的地址 ,然后+1 就得到字符串 start 的地址了。這就完成了代碼的自定位。 剩下的就是調(diào)用函數(shù)了 將函數(shù)的地址都壓到堆棧之中,這樣可以使用 ebp 這個(gè)來定位函數(shù)指針。具體看代碼。 編譯完成后 使用OD 來加載,然后選中這部分代碼,右鍵2進(jìn)制復(fù)制 ,整理成 shellcode 形式,使用的時(shí)候 注意要將其中的 函數(shù)地址改成正確的,,Windows的一個(gè)特性就是 系統(tǒng)的 dll 在所有的 exe 中都會加載到相同的基質(zhì) 那么。幔穑椤〉牡刂吩谒械倪M(jìn)程中都是一樣的。 下面測試下 #include <windows.h> 億恩科技地址(ADD):鄭州市黃河路129號天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888 本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |