PE头之IMAGE_FILE_HEADER解析

预备知识

一、相关实验

本实验要求您已经认真学习和完成了《IMAGE_DOS_HEADER解析》。

二、C32Asm

C32Asm是一款国产的16进制编辑器,可以十分方便的对二进制文件进行各种编辑操作,同时支持反汇编操作。
本系列实验主要使用C32Asm作为编辑器,同类的编辑工具还有WinHex、010Editor等。

三、LordPE

LordPE除了可以查看PE文件的基本信息之外,还支持对PE文件的编辑操作,可以修改PE文件中各个字段或者结构的数据然后进行保存。

实验目的

1)了解PE文件结构中的DosStub部分;
2)学习PE文件结构中FileHeader部分;
3)掌握PE文件结构相关的几个重要概念。

实验环境

在这里插入图片描述
服务器:Windows XP,IP地址:随机分配
辅助工具:C32Asm、PEiD、StudPE、LordPE

实验步骤一

PE头结构的定位。
在上一个实验中,提到了PE头的位置由IMAGE_DOS_HEADER的最后一个字段e_lfanew来指定,现在在C32Asm中进行一次实践操作。打开C:\PE,选中notepad.exe后单击鼠标右键,在弹出的右键菜单中选择“发送到(N)”、C32Asm,即可使用C32Asm打开notepad.exe文件。
在C32Asm中,可以看到e_lfanew的值为0x000000E0(IMAGE_DOS_HEADER的大小为0x40,而e_lfanew位于IMAGE_DOS_HEADER的最后一个DWORD类型的值)。在C32Asm中按下Ctrl+G快捷键,在弹出的跳转对话框中选中“文件开始”以及“16进制”两个选项,随后在OFFSET中输入要跳转的地址E0,单击确定按钮即可跳转到PE头所在的位置了,如下图所示:
在这里插入图片描述
e_lfanew指向PE头的示意图的示意图如下图所示:
在这里插入图片描述
PE头在WinNt.h头文件中的结构体名称为IMAGE_NT_HEADERS,那么在IMAGE_DOS_HEADER与IMAGE_NT_HEADERS之间的数据是什么呢?为什么需要根据IMAGE_DOS_HEADER结构的e_lfanew成员来确定IMAGE_NT_HEADERS结构的位置呢?
在IMAGE_DOS_HEADER和IMAGE_NT_HEADERS之间存在一个叫做DosStub的数据块,DosStub实际上是一个DOS程序,当PE文件运行在DOS模式下时这个程序将被执行。DosStub通常由编译器自动生成,而且它的大小也并不固定,由此造成PE头的位置也不是固定的,需要动态进行解析。当PE文件运行在DOS模式下时,DosStub通常输出一句话“This program cannot be run in DOS mode.”然后退出。
对于PE文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值