更改PE檔案載入動態庫
阿新 • • 發佈:2019-01-04
最近看了《逆向工程核心原理》,其中第25.4節講了更改PE檔案讓目標檔案載入我們的動態庫。現在做一下完整介紹。
PE檔案的匯入DLL資訊儲存在IDT中,於是我們只需將DLL加到目標PE檔案的IDT中,這時我們得先看一下IDT的空間大小。 1.檢視IDT: 首先用PEView檢視目標程式,看IMPORT Directory Table內容可見地址範圍從76CC---772F,用HxD觀察該範圍內存空間
這時我們還要確認這個部分是否可用,我們觀察.rdata大小為2E00,但是實際使用大小為2C56於是,我們可以用剩下的1AA位元組地址
3.刪除繫結匯入表 若要正常匯入DLL,需要向繫結匯入表新增資訊。但是繫結匯入表是個可選項,所以為了方便可刪除。如果繫結匯入表資訊錯誤,則執行失敗,但是沒有繫結匯入表反而沒有問題。本例的繫結匯入表資訊為0,所以不用刪除,但是其他檔案需注意。
4.建立新的IDT 完全複製原IDT內容(76CC---772F ),然後覆蓋到新的IDT地址處
5。設定NAME,INT,IAT INT RVA=7F00-5200+6000=8D00 NAME RVA=7F10-5200+6000=8D10 IAT RVA=7F20-5200+6000=8D20
6.修改.rdata的屬性 向IAT節區頭新增IMAGE_SEC_MEM_WRITE(80000000)屬性