參考自《加密與解密》(第4版)第12章 注入技術
dll檔案**細節省略,通過使用messagebox函式來顯示訊息框,僅此而已。關於dll檔案的編寫,也是日後要好好學習的點。dll檔案也有自己的主函式,博主未編寫用於攻擊的dll(即使編寫了也不敢公然發),故在此一筆帶過了。
本文的重點是修改輸入表,故我們需對輸入表的功能和結構有乙個清晰的認識。
輸入表,也稱匯入表,儲存著pe檔案載入時,一併載入的函式名和其駐留的dll名等動態鏈結所需的資訊。不想把各位朋友用理論煩走了,所以自己妄自總結一句話:就是指明pe檔案執行時所使用的各個函式,這個過程中有對dll檔案的裝入,也有對每個dll檔案中的函式進行實際定位最後寫入函式名或序號與虛擬位址的對映關係表iat。可以這麼說,沒有輸入表,pe檔案執行時就會像個無頭蒼蠅,更別提我們以後的加殼等練習了。
輸入表的結構簡稱為iid,乙個輸入表就是乙個陣列,結構如下:
typedef struct _image_import_descriptor dummyunionname;
dword timedatestamp; //04h
dword forwarderchain; //08h
dword name; //0ch
dword firstthunk; //10h
} image_import_descriptor,*pimage_import_descriptor;
這裡修改輸入表,因為考慮增加的dll會增大匯入表,進而可能將與之關聯的originalfirstthunk和firstthunk覆蓋,故不如將其整體遷移到新的位址,最後修改一下匯入表的位址就可以了。
新闢一塊領土作為匯入表,首先當然想找乙個因為對齊帶來的空洞,但往往我們很少有這樣的機會。因此退而求其次,擴充套件最後乙個節,或者增加乙個節。本文使用了前者進行實現。
關於記事本,作為宿主,我們必須對其進行分析。首先我們看一下區段資訊:
因為要滿足兩個條件,意識virtualsize小雨rawsize,然後空洞大小要大於0xdc。這個數值是對上方輸入表的結構研究後,newiidsize=oldsize+sizeof(輸入表)。如此我們就驗證了前面說的,得到乙個裝得下新輸入表的空洞,是很困難的。這裡我們記錄兩個數值,用來擴充套件最後乙個區段使用:
在lordpe分析notepad.exe的基礎上,我們檢視輸入表的rva:
如圖,增加一項新的iid結構物件後,還要以全0來結尾,因此必然不能直接在這裡新增。(會不會覺得我比較囉嗦)
把匯入表送入的新地點,是在上方我們計算的0x10400開始的區域,如圖:
如此,貼上一下先:
繼續新增00,確定待會兒新紀錄的新增位置:
按部就班來,現在要返回原iid區域構造新的originalfirstthunk、firstthunk和name結構。name此處即為msg,但因其在不同例子下情況不一樣,因此我們把兩個偏移位址表放在前面。
接著,我們填充originalfirstthunk、firstthunk:
修改時要注意位元組的順序,從後往前寫。注:下面的偏移全部是記憶體偏移。
填寫新的輸入表iid結構:
如此,我們要修改輸入表目錄的位置資訊和大小:
接著要修正新區塊的屬性,.text節原來的屬性是0x60000020,為了增加可寫屬性,即在原來的屬性上加上0x80000000,結果為0e000020,這樣我們繼續在對應位置修改:
最後:ok了
Dll注入技術之輸入法注入
dll注入技術之輸入法注入 輸入法注入原理是利用windows系統中在切換輸入法需要輸入字元時,系統就會把這個輸入法需要的ime檔案裝載到當前程序中,而由於這個ime檔案本質上只是個存放在c windows system32目錄下的特殊的dll檔案,因此我們可以利用這個特性,在ime檔案中使用loa...
DLL注入技術之輸入法注入
輸入法注入原理是利用windows系統中在切換輸入法需要輸入字元時,系統就會把這個輸入法需要的ime檔案裝載到當前程序中,而由於這個ime檔案本質上只是個存放在c windows system32目錄下的特殊的dll檔案,因此我們可以利用這個特性,在ime檔案中使用loadlibrary 函式待注入...
Dll注入技術之登錄檔注入
黑客反病毒論壇 dll注入技術之reg注入 dll注入技術指的是將乙個dll檔案強行載入到exe檔案中,並成為exe檔案中的一部分,這樣做的目的在於方便我們通過這個dll讀寫exe檔案記憶體資料,例如 hook exe檔案中的api 或以被注入exe的身份去執行一些操作等等。reg注入原理是利用在w...