免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
PE File中取Section,用RVA還是用PointerToRawData?

在Dump PE File的section table時候,一開始選用RVA來計算section的地址,以期望能取到Section信息,后來發(fā)現(xiàn)不完全正確,應(yīng)該用PointerToRawData的值。

如果根據(jù)自己定義的內(nèi)存對齊的值,將FileAlignment和SectionAlignment設(shè)為相同的對齊方式,這個時候生成的PE文件,RVA和PointerToRawData的值指向同一個地址,此時要取到Section的信息,用RVA也可以,因為值是一樣的。但是從意義上來說不完全正確。
一般生成的PE文件,假設(shè)FileAlignment = 200 Byte; SectionAlignment = 1000 Byte,此時RVA的值不等于PointerToRawData的值。如果不是由OS的loader裝載,也就是說,我要自己dump一個PE File,在自己的code中用的是fopen(),fread()這樣的函數(shù)將文件讀進內(nèi)存,而他們的作用僅僅是copy,并不像OS的loader將文件載入內(nèi)存,因此自己要要取Section的信息,應(yīng)該以后者的值來計算。因為如果是OS的loader載入文件,就會將文件按照Section Alignment的預(yù)設(shè)值將文件的各個部分放置內(nèi)存的各個memory page中。

以下附上Section Header的定義。
Section Header在WinNT.h中的結(jié)構(gòu)定義:
typedef struct _IMAGE_SECTION_HEADER {
    BYTE    Name[IMAGE_SIZEOF_SHORT_NAME];
    union {
        DWORD   PhysicalAddress;
        DWORD   VirtualSize;
    } Misc;
    DWORD   VirtualAddress;
    DWORD   SizeOfRawData;
    DWORD   PointerToRawData;
    DWORD   PointerToRelocations;
    DWORD   PointerToLinenumbers;
    WORD    NumberOfRelocations;
    WORD    NumberOfLinenumbers;
    DWORD   Characteristics;
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

1.VirtualAddress:本Section的RVA(相對虛擬地址)。PE裝載器將本section映射至內(nèi)存時會讀取本值,因此如果域值是1000h,而PE文件裝在地址400000h處,那么本節(jié)就被載到401000h。微軟把第一個Section 的此域值設(shè)為0x1000h。對于OBJ文檔,此域沒意義,總為0。
 
2.SizeOfRawData:經(jīng)過文件對齊處理后Section尺寸,PE裝載器提取本域值了解需映射入內(nèi)存的節(jié)字節(jié)數(shù)。 假設(shè)一個文件的文件對齊尺寸是0x200,如果前面的 VirtualSize 域指示本Section的長度是0x388字節(jié),則本域值為0x400,表示本節(jié)是0x400字節(jié)長。在obj中,這個與表示有編譯器指定的真正的section 大小。

3.PointerToRawData:這是本Section基于文件的偏移量,PE裝載器通過本域值找到Section數(shù)據(jù)在文件中的位置。 如果是你自己以內(nèi)存映射的方式應(yīng)設(shè)了一個PE程序(而不是由操作系統(tǒng)的裝載器載入),那么這個域比VirtualAddress更重要。在這種情況下你有一個完全線性的文件映射,么你就必須根據(jù)此值找到本Section的信息,而不是根據(jù)VirtualAddress 中的RVA值。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【原創(chuàng)】菜鳥注釋PEMaker6源代碼(一)
關(guān)于PE可執(zhí)行文件的修改
windows PE文件結(jié)構(gòu)及其加載機制
PE文件重定位表詳解
深入剖析PE文件
PE文件概述
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服