7 重定位表

2022-07-15 19:51:14 字數 882 閱讀 8575

一種重定位方法:

g_dwvar dd ?

call @f

pop ebx

sub ebx, offset @b  ;執行時的

eip減去編譯時的

eip,算出偏移

mov eax, [ebx + offset g_dwvar]

/dll和

/fixed:no

選項都會產生重定位表

,一般會多出乙個.reloc的節

typedef struct _image_base_relocation image_base_relocation;

下圖中是dll檔案的

重定位表,virtualaddress為1000h,sizeofblock為10,typeoffset陣列分別為3003,

3008

,3064

,0000,高4

位表示image_rel_based_highlow,最後乙個0000用來

4位元組對齊。

實際要重定位的位址分別是10001003,

10001008

,10001064

。可以看出只有分頁位址為

1000h

的地方要修。

再去看看10001003,

10001008

,10001064

裡是什麼,前兩個是字串位址,最後乙個是

iat中的乙個項,確實需要修。可以發現命中在重定位表中的資料,偵錯程式會加上下劃線。

基址重定位表

向程序的虛擬記憶體載入pe檔案 exe dll sys 時,問價會被載入到pe頭的imagebase所指的位址處,若載入的時dll sys 檔案,且在imagebase位置處已經載入了其他dll檔案,那麼pe裝載器就會將其載入到其他未被占用的空間,這就是pe檔案的重定位。ex a.dll被載入到te...

PE 重定位表

參考文章 重定位表 relocation table 用於在程式載入到記憶體中時,進行記憶體位址的修正。為什麼要進行記憶體位址的修正?我們舉個例子來說 test.exe可執行程式需要三個動態鏈結庫dll a.dll,b.dll,c.dll 假設test.exe的imagebase為400000h,而...

dos重定位表修改

資料 struct do ehead t dos 下 exe 頭檔案格式 對於debug版本的可執行檔案,通過dump其debug資訊,我們可以方便的得到其檔案頭資訊,重定位表,符號表等等資訊。通過ida我們可以看到模擬載入後對應指令處的線性位址等資訊。有了這些資訊我們如何實施重定位表的修改呢?1 ...