PE文件头

上次我们认识了Dos头,这次我们来认识一下PE文件头

 

紧跟着Dos stub的是PE文件头(PE Header),PE装载器将从IMAGE_DOS_HEADER结构中的e_lfanew字段里找到PE Header的起

始偏移量。该结构如下:

 

typedef struct  _IMAGE_NT_HEADERS {

    DWORD Signature;                           // PE文件头标志:"PE/0/0"

    IMAGE_FILE_HEADER FileHeader;               // PE文件物理分布的信息

    IMAGE_OPTIONAL_HEADER32 OptionalHeader; // PE文件逻辑分布的信息

} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32

 

IMAGE_NT_HEADERS是由三个字段组成。

 

1、Signature字段

 

    在一个有效的PE文件里,Signature字段被设置为00004550h,ASCII码字符是"PE00"

 

2、IMAGE_FILE_HEADER结构

 

   typedef struct _IMAGE_FILE_HEADER {
  WORD Machine;     //运行平台
  WORD NumberOfSections;  //区块的数目
  DWORD TimeDateStamp;    //文件创建日期和时间
  DWORD PointerToSymbolTable;  //指向符号表
  DWORD NumberOfSymbols;       //符号表中符号个数
  WORD SizeOfOptionalHeader;   //IMAGE_OPTIONAL_HEADER32结构大小
  WORD Characteristics;             //文件属性
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;

 

 

3、IMAGE_OPTIONAL_HEADER结构

 typedef struct _IMAGE_OPTIONAL_HEADER {

    //

    // 标准域

    //

    WORD    Magic;                    

    BYTE    MajorLinkerVersion;        

    BYTE    MinorLinkerVersion;        

    DWORD   SizeOfCode;                  

    DWORD   SizeOfInitializedData;      

    DWORD   SizeOfUninitializedData;        

    DWORD   AddressOfEntryPoint;        

    DWORD   BaseOfCode;                  

    DWORD   BaseOfData;                  

    //

    // NT附加域      

    //

    DWORD   ImageBase;                   

    DWORD   SectionAlignment;           

    DWORD   FileAlignment;          

    WORD    MajorOperatingSystemVersion;

    WORD    MinorOperatingSystemVersion;

    WORD    MajorImageVersion;       

    WORD    MinorImageVersion;       

    WORD    MajorSubsystemVersion;      

    WORD    MinorSubsystemVersion;      

    DWORD   Win32VersionValue;      

    DWORD   SizeOfImage;                

    DWORD   SizeOfHeaders;          

    DWORD   CheckSum;                

    WORD    Subsystem;                   

    WORD    DllCharacteristics;     

    DWORD   SizeOfStackReserve;     

    DWORD   SizeOfStackCommit;      

    DWORD   SizeOfHeapReserve;      

    DWORD   SizeOfHeapCommit;           

    DWORD   LoaderFlags;                

    DWORD   NumberOfRvaAndSizes;        

    IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];

} IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值