【2021.01.14】PE节表

IMAGE_SECTION_HEADER

#define IMAGE_SIZEOF_SHORT_NAME              8

typedef struct _IMAGE_SECTION_HEADER {
    BYTE    Name[IMAGE_SIZEOF_SHORT_NAME];    //ASCII字符串,节名称,可以自定义,只截取8个
    union {                                   //Misc,是该节在没有对齐前的真实尺寸,该值可以不准确
            DWORD   PhysicalAddress;
            DWORD   VirtualSize;
    } Misc;
    DWORD   VirtualAddress;                   //在内存中的起始位置,加上ImageBase才是在内存中的真正地址
    DWORD   SizeOfRawData;                    //节在文件中对齐后的尺寸
    DWORD   PointerToRawData;                 //节在文件中的偏移,在文件中的起始位置
    DWORD   PointerToRelocations;             //调试相关
    DWORD   PointerToLinenumbers;             //调试相关
    WORD    NumberOfRelocations;              //调试相关
    WORD    NumberOfLinenumbers;              //调试相关
    DWORD   Characteristics;                  //节的属性
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

注意:

Misc 可能比 SizeOfRawData 要大,也可能比它小。在内存中展开时,哪个值大就按照哪个来展开。

IMAGE_SECTION_HEADER->Characteristics

数据位常量符号为1时的含义
5IMAGE_SCN_CNT_CODE 或 00000020h节中包含代码
6IMAGE_SCN_CNT_INITIALIZED_DATA 或 00000040h节中包含已初始化数据
7

IMAGE_SCN_CNT_UNINITIALIZED_DATA 或 00000080h

节中包含未初始化数据
8IMAGE_SCN_LNK_OTHER 或 00000100h保留
25IMAGE_SCN_MEM_DISCARDABLE 或 02000000h节中的数据在进程开始以后被丢弃,如:.reloc
26IMAGE_SCN_MEM_NOT_CACHED 或 04000000h节中的数据不会经过缓存
27IMAGE_SCN_MEM_NOT_PAGED 或 08000000h节中的数据不会被交换到硬盘
28IMAGE_SCN_MEM_SHARED 或 10000000h节中的数据将被不同的进程所共享
29IMAGE_SCN_MEM_EXECUTE 或 20000000h映射到内存后的页面包含可执行属性
30IMAGE_SCN_MEM_READ 或 40000000h映射到内存后的页面包含可读属性
31IMAGE_SCN_MEM_WRITE 或 80000000h映射到内存后的页面包含可写属性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值