2022年PE文件结构 .pdf

上传人:Che****ry 文档编号:34263705 上传时间:2022-08-15 格式:PDF 页数:4 大小:178.73KB
返回 下载 相关 举报
2022年PE文件结构 .pdf_第1页
第1页 / 共4页
2022年PE文件结构 .pdf_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《2022年PE文件结构 .pdf》由会员分享,可在线阅读,更多相关《2022年PE文件结构 .pdf(4页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、PEfile struct自下而上结构分析1.DOS MZ Header所有 PE 文件(甚至32位的 DLLs )必须以简单的DOS MZ header 开始,它是一个IMAGE_DOS_HEADER结构 (winnt.h) 。有了它, 一旦程序在DOS 下执行, DOS 就能识别出这是有效的执行体,然后运行紧随MZ Header 之后的 DOS Stub。typedef struct _IMAGE_DOS_HEADER/ DOS 的.EXE 头部WORD e_magic;/ 魔术数字WORD e_cblp;/ 文件最后页的字节数WORD e_cp;/ 文件页数WORD e_crlc;/ 重

2、定义元素个数WORD e_cparhdr;/ 头部尺寸,以段落为单位WORD e_minalloc;/ 所需的最小附加段WORD e_maxalloc;/ 所需的最大附加段WORD e_ss;/ 初始的 SS值(相对偏移量 )WORD e_sp;/ 初始的 SP值WORD e_csum;/ 校验和WORD e_ip;/ 初始的 IP 值WORD e_cs;/ 初始的 CS 值(相对偏移量 )WORD e_lfarlc;/ 重分配表文件地址WORD e_ovno;/ 覆盖号WORD e_res4;/ 保留字WORD e_oemid;/ OEM 标识符 (相对 e_oeminfo)WORD e_o

3、eminfo;/ OEM 信息名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - WORD e_res210;/ 保留字LONG e_lfanew;/ 新 exe头部的文件地址 IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;其中第一个域e_magic,被称为魔术数字,它用于表示一个MS-DOS 兼容的文件类型。所有MS-DOS 兼容的可执行文件都将这个值设为0 x5A4D ,表示 ASCII 字符 MZ 。

4、MS-DOS 头部之所以有的时候被称为MZ 头部,就是这个缘故。还有许多其他的域对于MS-DOS 操作系统来说都有用,但是对于Windows NT 来说,这个结构中只有一个有用的域最后一个域e_lfnew,一个 4 字节的文件偏移量,PE文件头部就是由它定位的。2.DOS SubDOS Stub 实际上是个有效的EXE,在不支持PE 文件格式的操作系统中,它将简单显示一个错误提示,类似于字符串“!This program cannot berun in DOS mode.”或者程序员可根据自己的意图实现完整的DOS 代码。大多数情况下DOS Stub 由汇编器 /编译器自动生成。3.PE He

5、ader (IMAGE_NT_HEADERS)typedef struct_IMAGE_NT_HEADERSDWORD Signature;/ PE 文件头标志 :PE00IMAGE_FILE_HEADERFileHeader;/ PE 文件物理分布的信息,文件头 IMAGE_OPTIONAL_HEADER32OptionalHeader; / PE 文件逻辑分布的信息,可选头 IMAGE_NT_HEADERS32,*PIMAGE_NT_HEADERS32;typedef struct _IMAGE_FILE_HEADERWORDMachine;/cpu 类型WORDNumberOfSecti

6、ons; /段的个数DWORDTimeDateStamp;/文件建立的时间,部分编译器忽略此项DWORDPointerToSymbolTable; /符号表地址DWORDNumberOfSymbols; /The number of symbols in the symbol table.WORDSizeOf OptionalHeader;/ 可选头的长度,用它来检验PE 文件的正确性 .WORDCharacteristics;/是一个标志的集合,其大部分位用于OBJ 或 LIB 文件中 . IMAGE_FILE_HEADER,*PIMAGE_FILE_HEADER;#define IMAGE

7、_SIZEOF_FILE_HEADER20/_IMAGE_FILE_HEADER结构长度为20字节Machine 参数可取以下数值IMAGE_OPTIONAL_HEADER32文件头下面就是可选择头,这是一个叫做IMAGE_OPTIONAL_HEADER的结构,由 224个字节组成。虽然它的名字是“可选头部”,但是请确信:这个头部并非“可选”,而是“必需”的。可选头部包含了很多关于可执行映像的重要信息。例如,初始的堆栈大小、程序入口点的位置、首选基地址、操作系统版本、段对齐的信息等。IMAGE_FILE_MACHINE_I386(0 x14c)Intel 80386处理器以上0 x014dIn

8、tel 80486 处理器以上0 x014eIntel Pentium 处理器以上0 x0160R3000(MIPS) 处理器, big endianIMAGE_FILE_MACHINE_R3000(0 x162)R3000(MIPS) 处理器, little endianIMAGE_FILE_MACHINE_R4000(0 x166)R4000(MIPS) 处理器, little endianIMAGE_FILE_MACHINE_R10000(0 x168)R10000(MIPS) 处理器, little endianIMAGE_FILE_MACHINE_ALPHA(0 x184)DEC A

9、lpha AXP 处理器IMAGE_FILE_MACHINE_POWERPC(0 x1f0)IBM Power PC,little endian名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - typedef struct _IMAGE_OPTIONAL_HEADER/ 标准域/WORDMagic; /这个值好像总是0 x010b.BYTEMajorLinkerVersion; /链接器的版本号,这个值不太可靠.BYTEMinor

10、LinkerVersion;DWORDSizeOf Code;/可执行代码的长度DWORDSizeOf Initializ edData; /初始化数据的长度(数据段 )DWORDSizeOf UninitializedData; /未初始化数据的长度(bss 段)DWORDAddressOfEntryPoint;/ 代码的入口RVA 地址DWORDBaseOfCode;/DWORDBaseOfData;/ NT 附加域/DWORDImageBase;/ 载入程序首选的RVA 地址 ,这个地址可被Loader 改变 .DWORDSectionAlignment; /段加载后在内存中的对齐方式D

11、WORDFileAlignment; / 段在文件中的对齐方式WORDMajorOperatingSystemVersion; /操作系统版本WORDMinorOperatingSystemVersion;WORDMajorImageVersion;/程序版本WORDMinorImageVersion;WORDMajorSubsystemVersion;/子系统版本号,这个域系统支持.WORDMinorSubsystemVersion;DWORDWin32VersionValue;/这个值总是为0DWORDSizeOf Image; /程序调入后占用内存大小(byte),等于所有段的长度之和D

12、WORDSizeOf Headers;/文件头长度DWORDCheckSum; /校验和 ,仅用在驱动程序中,在可执行文件中可能为0.WORDSubsystem; /一个标明可执行文件所期望的子系统的枚举值WORDDllCharacteristics;/DLL 状态DWORDSizeOf StackReserve;/保留堆栈大小DWORDSizeOf StackCommit; /启动后实际申请的堆栈数,可随实际情况变大.DWORDSizeOf HeapReserve;/ 保留堆大小DWORDSizeOf HeapCommit;/实际堆大小DWORDLoaderFlags;/该值已经废弃DWOR

13、DNumberOfRvaAndSiz es;/ 下面的目录表入口个数IMAGE_DATA_DIRECTORYDataDirectoryIMAGE_NUMBEROF_DIRECTORY_ENTRIES; IMAGE_OPTIONAL_HEADER,*PIMAGE_OPTIONAL_HEADER;#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES16typedef struct _IMAGE_DATA_DIRECTORYDWORDVirtualAddress;/ 起始 RVA 地址DWORDSize;/ 长度名师资料总结 - - -精品资料欢迎下载 - - - - -

14、 - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY;4.IMAGE_SECTION_HEADERPE 文件格式中,所有的节头部位于可选头部之后。每个节头部为40 个字节长,并且没有任何填充信息。节头部被定义为以下的结构:#define IMAGE_SIZEOF_SHORT_NAME8typedef struct _IMAGE_SECTION_HEADERBYTENameIMAGE_SIZEOF_SHORT

15、_NAME;/ 节表名称 ,如.textunion DWORDPhysicalAddress;/ 物理地址DWORDVirtualSize;/ 真实长度 Misc;DWORDVirtualAddress;/ RVADWORDSizeOf RawData;/ 物理长度DWORDPointerToRawData;/ 节基于文件的偏移量DWORDPointerToRelocations;/ 重定位的偏移DWORDPointerToLinenumbers;/ 行号表的偏移WORDNumberOfRelocations;/ 重定位项数目WORDNumberOfLinenumbers;/ 行号表的数目DWORDCharacteristics;/ 节属性 IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;其中 IMAGE_SIZEOF_SHORT_NAME等于 8。注意,如果不是这个值,那么这个数据结构大小就不能固定下来,也就不能确定其他变量位置。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com