【2021.01.12】标准PE头属性说明

PE头

typedef struct _IMAGE_NT_HEADERS {
    DWORD Signature;                            //PE标识                            
    IMAGE_FILE_HEADER FileHeader;               //标准PE头
    IMAGE_OPTIONAL_HEADER32 OptionalHeader;     //扩展PE头
} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
成员 大小(十进制)
Signature 4字节
IMAGE_FILE_HEADER 20字节
IMAGE_OPTIONAL_HEADER32 224字节

PE标识

PE标识不能被破坏,操作系统在启动一个程序的时候会检测这个标识。

标准PE头

typedef struct _IMAGE_FILE_HEADER {
    WORD    Machine;                //可以运行在什么样的CPU上 任意:0 Intel 386以及后续:14C x64:8864
    WORD    NumberOfSections;       //表示节的数量
    DWORD   TimeDateStamp;          //编译器填写的时间戳,与文件属性里面的创建时间、修改时间无关
    DWORD   PointerToSymbolTable;   //调试相关
    DWORD   NumberOfSymbols;        //调试相关
    WORD    SizeOfOptionalHeader;   //可选PE头的大小(32位PE文件:0xE0 64位PE文件:0xF0)
    WORD    Characteristics;        //文件属性
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
成员 大小(十进制)
Machine 2字节
NumberOfSections 2字节
TimeDateStamp 4字节
PointerToSymbolTable 4字节
NumberOfSymbols 4字节
SizeOfOptionalHeader 2字节
Characteristics 2字节
IMAGE_FILE_HEADER->Characteristics(文件属性)
数据位 常量符号 为1时的含义
0 IMAGE_FILE_RELOCS_STRIPPED 文件中不存在重定位信息
1 IMAGE_FILE_EXECUTABLE_IMAGE 文件是可执行的
2 IMAGE_FILE_LINE_NUMS_STRIPPED 不存在行信息
3 IMAGE_FILE_LOCAL_SYMS_STRIPPED 不存在符号信息
4 IMAGE_FILE_AGGRESSVIE_WS_TRIM 调整工作集
5 IMAGE_FILE_LARGE_ADDRESS_AWARE 应用程序可处理大于2GB的地址
6   此标志保留
7 IMAGE_FILE_BYTES_REVERSED_LO 小尾方式
8 IMAGE_FILE_32BIT_MACHINE 只在32位平台运行
9 IMAGE_FILE_DEBUG_STRIPPED 不包含调试信息
10 IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 不能从可移动磁盘运行
11 IMAGE_FILE_NET_RUN_FROM_SWAP 不能从网络运行
12 IMAGE_FILE_SYSTEM 系统文件(如驱动程序),不能直接运行
13 IMAGE_FILE_DLL DLL文件
14 IMAGE_FILE_UP_SYSTEM_ONLY 文件不能在多处理器计算机上运行
15 IMAGE_FILE_BYTES_REVERSED_HI 大尾方式

剖析IMAGE_FILE_HEADER->Characteristics

  1. 如上图所示,Characteristics 为 0F 01,由于是小端存储所以是 01 0F。
  2. 01 0F 转换为二进制:0000 0001 0000 1111。
  3. 转换为二进制后总共16位,对比上面的表格可以知道代表了什么含义,表示了哪些文件属性。

对比如下:

猜你喜欢

转载自blog.csdn.net/qq_18120361/article/details/112547272
PE