“IMAGE_SECTION_HEADER”中的“PhysicalAddress”有何用途?

问题描述 投票:0回答:1

PhysicalAddress
Misc
联盟的成员,定义如下:

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;

我知道通常用

VirtualSize
代替
PhysicalAddress
,但是网上关于
PhysicalAddress
的信息很少。

我很好奇这个字段的实际用途?这个字段历史上有用过吗,有相关例子吗?

windows winapi reverse-engineering portable-executable
1个回答
0
投票

Per 深入了解 PE:Win32 之旅 便携式可执行文件格式:

union {
    DWORD PhysicalAddress
    DWORD VirtualSize
} Misc;

此字段在 EXE 或 OBJ 中具有不同的含义。 在 EXE 中,它保存代码或数据的实际大小。这是四舍五入到最接近的文件对齐倍数之前的大小。结构中稍后的 SizeOfRawData 字段(似乎有点用词不当)保存向上舍入的值。 Borland 链接器颠倒了这两个字段的含义并且看起来是正确的。 对于 OBJ 文件,该字段指示该节的物理地址。 第一个节从地址 0 开始。要在下一节的 OBJ 文件中查找物理地址,请将 SizeOfRawData 值添加到当前节的物理地址.

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.