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