PE文件详解------PE文件结构剖析

一.PE文件结构纵览


PE文件的结构如上图所示,由低地址到高地址分别为:Dos头,PE头,块表,块,调试信息。其中真正的PE文件头是位于Dos头的后面的部分。


上图为利用PE工具打开的一个可执行文件在磁盘中的映射,这就是PE文件的内部信息。

可以看到这个文件的钱两个字节为”4D 5A”,表示的就是Dos头的第一个字段的额信息,标示Dos的头部。在Dos头结构的最后一个字段是一个指针,这个指针指向PE头。在上图中可以看到00 00 00 60表示的就是这个指针的值,它指向这个PE文件的真正PE头。根据这个地址可以找到PE头开始的地方,45 50表示的就是PE头结构的而第一个字段,标示的就是PE头。可以看到,PE文件的结构十分分明,没有一块多余的地方,各个部分排列紧凑,井井有条。我们获取PE文件的信息就是通过读取这个2进制文件。


二.Dos 头(Dos Header)

Dos头中的信息存储在IMAGE_DOS_HEADER中。这个结构的定义为:

 

IMAGE_DOS_HEADER STRUCT

{

+0hWORDe_magic //Magic DOS signature MZ(4Dh 5Ah) DOS 可执行文件标记

+2h WORD e_cblp //Bytes on last page of file

+4hWORD e_cp //Pages in file

+6hWORD e_crlc //Relocations

+8hWORD e_cparhdr //Size of header in paragraphs

+0ahWORD e_minalloc //Minimun extra paragraphs needs

+0chWORD e_maxalloc //Maximun extra paragraphs needs

+0ehWORD e_ss //intial(relative)SS value DOS 代码的初始化堆栈SS

+10hWORD e_sp //intial SP value DOS 代码的初始化堆栈指针SP

+12hWORD e_csum //Checksum

+14hWORD e_ip // intial IP value DOS 代码的初始化指令入口[指针IP]

+16hWORD e_cs //intial(relative)CS value DOS 代码的初始堆栈入口

+18hWORD e_lfarlc //File Address of relocation table

+1ahWORD e_ovno // Overlay number

+1chWORD e_res[4] //Reserved words

+24hWORD e_oemid // OEM identifier(for e_oeminfo)

+26hWORD e_oeminfo // OEM information;e_oemid specific

+29hWORD e_res2[10] // Reserved words

+3chDWORD e_lfanew //Offset to start of PE header 指向PE 文件头

} IMAGE_DOS_HEADER ENDS

 

 

在Image_Dos_Header 中有几个成员是很重要的,第一个magic,这个字段是来标示是否为Dos 程序的,如果是的话那么就会有MZ 的

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值