预备知识
一、相关实验
本实验要求您已经认真学习和完成了《IMAGE_DOS_HEADER解析》、《PE头之IMAGE_FILE_HEADER解析》。
二、C32Asm
C32Asm是一款国产的16进制编辑器,可以十分方便的对二进制文件进行各种编辑操作,同时支持反汇编操作。
本系列实验主要使用C32Asm作为编辑器,同类的编辑工具还有WinHex、010Editor等。
三、LordPE
LordPE除了可以查看PE文件的基本信息之外,还支持对PE文件的编辑操作,可以修改PE文件中各个字段或者结构的数据然后进行保存。
实验目的
1)学习PE文件结构中OptionalHeader部分;
2)了解AddressOfEntryPoint以及ImageBase;
3)了解数据目录表的结构。
实验环境
服务器:Windows XP,IP地址:随机分配
辅助工具:C32Asm、PEiD、StudPE、LordPE
实验步骤一
OptionalHeader结构学习。
在上一个实验中我们介绍了IMAGE_NT_HEADERS结构体中的Signature字段以及FileHeader字段,本实验将介绍其最后一个字段OptionalHeader。OptionalHeader的中文译名叫做“可选头”,用于为加载器提供加载信息,注意OptionalHeader的大小并不固定,其大小由FileHeader中的SizeOfOptionalHeader字段来决定,其关系如下图所示:
OptionalHeader字段对应的结构体的名称为IMAGE_OPTIONAL_HEADER,该结构体在WinNt.h头文件中的完整定义如下:
typedef struct _IMAGE_OPTIONAL_HEADER {
WORD Magic;
BYTE MajorLinkerVersion;
BYTE MinorLinkerVersion;
DWORD SizeOfCode;
DWORD SizeOfInitializedData;
DWORD SizeOfUninitializedData;
DWORD AddressOfEntryPoint;
DWORD BaseOfCode;
DWORD BaseOfData;
DWORD ImageBase;
DWORD SectionAlignment;
DWORD FileAlignment;
WORD MajorOperatingSystemVersion;
WORD MinorOperatingSystemVersion;
WORD MajorImageVersion;
WORD MinorImageVersion;
WORD MajorSubsystemVersion;