博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PE header
阅读量:2065 次
发布时间:2019-04-29

本文共 1492 字,大约阅读时间需要 4 分钟。

PE header 由三部分组成

   字串 “PE\0\0”(Signature)

   映像文件头(FileHeader)

SizeOfImage字段(+50h)

内存中整个PE映像尺寸

     按照“SectionAlignment”对齐的,它就是所有头和节的长度的总和

 

   可选映像头(OptionalHeader)

 

IMAGE_NT_HEADERS STRUCT

  Signature            DWORD                                 ?           ;PE文件标识

  FileHeader          IMAGE_FILE_HEADER                <>

  OptionalHeader  IMAGE_OPTIONAL_HEADER32 <>

IMAGE_NT_HEADERS ENDS 

 

字串 “PE\0\0”

     Signature 一dword类型,值为50h, 45h, 00h, 00h(PE\0\0)。 本域为PE标记,我们可以此识别给定文件是否为有效PE文件。

     这个字串在文件中的位置(e_lfanew),可以在DOS程序头中找到它的指针,它占用四个字节,位于文件开始偏移3CH字节中。

 

 

映像文件头

     该结构域包含了关于PE文件物理分布的信息, 比如节数目、文件执行机器等。

     它实际上是结构IMAGE_FILE_HEADER的简称。

 

Machine字段 ——指定文件的运行平台

     不同平台指令的机器码是不同的 ;如果Windows检测到这个字段指定的适用平台与当前的硬件平台不兼容,它将拒绝装入这个文件 

014ch —— Intel 386

0184h —— Dec Alpha AXP

01f0h  —— IBM Power PC(小尾方式)

0284h —— Dec Alpha AXP64 

 

小尾little endian

     数据的低字节被放置在连续存储区的首位

大尾big endian 

     数据的高字节被放置在连续存储区的首位

 

NumberOfSections字段

文件中存在的节的数量 

 

TimeDateStamp字段

编译器创建此文件的时间,它的数值是从1969年12月31日下午4:00开始到创建时间为止的总秒数 

 

Characteristics字段——影响系统对文件的装入方式 

 

 

 

可选映像头

optional header 结构是 IMAGE_NT_HEADERS 中的最后成员。包含了PE文件的逻辑分布信息。

该结构共有31个域。

 

AddressOfEntryPoint字段 (+28h)

     文件被执行时的入口地址

     如何改变文件执行的入口地址?

 

ImageBase字段 (+34h)

 文件的优先装入地址

     EXE

     DLL

     对link.exe指定/base:address选项来自定义优先装入地址

 

SectionAlignment字段(+38h)

内存中的节的对齐粒度

     每个节被装入的地址必定是本字段指定数值的整数倍

 

FileAlignment字段(+3ch)

文件中的节的对齐粒度

     节存储在磁盘文件中时的对齐单位

 

     提示加载器,为了载入映象文件需要多少页 

 

SizeOfHeaders字段(+54h)

所有头+节表的大小

     文件的开头到第一节的原始数据的偏移量

 

DataDirectory字段(+78h)!!!!!!

 

DataDirectory  IMAGE_DATA_DIRECTORY 16 dup(<>)     ;0078h

IMAGE_DATA_DIRECTORY STRUCT

  VirtualAddress    DWORD      ?     ;数据的起始RVA

  isize                      DWORD      ?     ;数据块的长度

IMAGE_DATA_DIRECTORY ENDS

导出表、导入表、资源、重定位表等数据块

 

 

 

 

转载地址:http://spumf.baihongyu.com/

你可能感兴趣的文章
搜索架构师 一面面经2019年6月
查看>>
稻草人手记
查看>>
第一次kaggle比赛 回顾篇
查看>>
leetcode 50. Pow(x, n)
查看>>
leetcode 130. Surrounded Regions
查看>>
【托业】【全真题库】TEST2-语法题
查看>>
博客文格式优化
查看>>
【托业】【新托业全真模拟】疑难语法题知识点总结(01~05)
查看>>
【SQL】group by 和order by 的区别。
查看>>
【F12】谷歌浏览器--前台效果可以在不访问服务器的前提下直接改样式看效果是否是预期值。...
查看>>
【Python】详解Python多线程Selenium跨浏览器测试
查看>>
Jmeter之参数化
查看>>
Shell 和Python的区别。
查看>>
Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
查看>>
Loadrunner之https协议录制回放报错如何解决?(九)
查看>>
python中xrange和range的异同
查看>>
列表、元组、集合、字典
查看>>
【Python】easygui小甲鱼
查看>>
【Python】关于Python多线程的一篇文章转载
查看>>
【Pyton】【小甲鱼】文件
查看>>