第25章 通過修改PE載入DLL

2022-03-09 03:37:38 字數 1545 閱讀 2304

前面的**沒有什麼特別的意義,了解即可.需要注意的是dummy這段**.

前面的**主要是為了執行想要的功能,在一載入dll時就能執行.而dummy()函式是為了保證此dll檔案能夠順利的新增到textview.exe檔案的匯入表中(然後由程式在執行時會載入此dll檔案).

pe檔案中的idt(image_directory_table)儲存在可選頭的後半段.

故得位址為:84cc,大小為64.看節區頭,可以發現它在第二節區.計算一下: 84cc - 6000 + 5200 = 76cc.

14h位元組乙個結構體.

第乙個iid結構體為kernel32.dll,   86bc - 6000 + 5200 = 78bc:

移動 iid 有三種方式: 1. 查詢檔案中的空白區域.        2. 增加檔案最後乙個節區的大小.        3.在檔案末尾新增新節區.

首先嘗試第一種方法:第二節區的末尾有空餘,

注意修改好以後一定要改相關節區的屬性,因為在載入pe檔案記憶體時,pe裝載器會修改iat,寫入函式的實際位址.

所以需要給該節區加上可寫許可權.同時也要修改import directory位址.

之前能成功是因為iat可選頭中,該段位址預設可寫,因此也可以只修改iatsize欄位來實現:

同時注意將繫結匯入表(提高dll載入的速度)資訊置0,如果不存在本身不影響但如果存在,自己卻修改iat,則會出現錯誤.

如何修改PE頭載入DLL

1.檢視pe檔案的idt,每乙個dll對應乙個iid 20個位元組,十六進製制下為14 如果原idt有足夠空間,則可以直接在原idt後面新增dll,如果沒有足夠空間,那麼需要將idt遷移至程式空白區域。乙個idt包含多個iid,最後是乙個20位元組的空白區域,所以說足夠空間的意思就是當你加入你自己的...

通過修改PE檔案匯入DLL

圖1由上圖我們可以得到以下資訊 idt的rva資訊在檔案偏移160h處,值為84cc idt的大小資訊在檔案偏移164h處,值為64h 1.1轉到idt處檢視具體資訊 轉到84cc也就是檔案偏移76cc 共有5個iid結構體 每個iid20個位元組,對應乙個dll相關資訊 最後乙個iid為null ...

第4章 並行資料載入

第4章 並行資料載入 本章簡述greenplum的資料載入特性。在乙個大規模的,tb級的資料倉儲上,大量的資料必須在乙個較短的維護視窗中載入。greenplum支援快速的 並行資料載入和外部表功能。管理員可以選擇單行錯誤隔離模式的外部表以便將錯誤的資料過濾到乙個單獨的表中,同時繼續載入正確的格式化的...