PE总结6---PE文件结构NT头之扩展头--IMAGE_OPTIONAL_HEADER
2015-12-09 08:44
459 查看
IMAGE_OPTIONAL_HEADER结构,如下:
一共31个字段成员,
11个没用的
7个重要的:
RVA也叫作OEP(7)
默认加载基址(10)Image Base
内存对齐(11) 一般是0x1000
文件对齐(12)一般是0x200
把文件加载进内存,所需要的内存大小(20)
所有头部大小(21)
数据目录的个数(30)
1个极度重要的:数据目录表(31)
IMAGE_NUMBEROF_DIRECTORY_ENTRIES------0X10-----一般情况下有16个数据目录,扩展头的大小一般为0xE0
在010Editor中,文件头显示信息,如下:
在LoadPE工具中,文件头显示信息,如下:
typedef struct _IMAGE_OPTIONAL_HEADER { // // Standard fields. // WORD Magic; // 标志字, ROM 映像(0107h),普通可执行文件(010Bh) BYTE MajorLinkerVersion; // 链接程序的主版本号 BYTE MinorLinkerVersion; // 链接程序的次版本号 DWORD SizeOfCode; // 所有含代码的节的总大小 DWORD SizeOfInitializedData; // 所有含已初始化数据的节的总大小 DWORD SizeOfUninitializedData; // 所有含未初始化数据的节的大小 DWORD AddressOfEntryPoint; // 程序执行入口RVA DWORD BaseOfCode; // 代码的区块的起始RVA DWORD BaseOfData; // 数据的区块的起始RVA // // NT additional fields. 以下是属于NT结构增加的领域。 // DWORD ImageBase; // 程序的首选装载地址 DWORD SectionAlignment; // 内存中的区块的对齐大小 DWORD FileAlignment; // 文件中的区块的对齐大小 WORD MajorOperatingSystemVersion; // 要求操作系统最低版本号的主版本号 WORD MinorOperatingSystemVersion; // 要求操作系统最低版本号的副版本号 WORD MajorImageVersion; // 可运行于操作系统的主版本号 WORD MinorImageVersion; // 可运行于操作系统的次版本号 WORD MajorSubsystemVersion; // 要求最低子系统版本的主版本号 WORD MinorSubsystemVersion; // 要求最低子系统版本的次版本号 DWORD Win32VersionValue; // 莫须有字段,不被病毒利用的话一般为0 DWORD SizeOfImage; // 映像装入内存后的总尺寸 DWORD SizeOfHeaders; // 所有头+ 区块表的尺寸大小 DWORD CheckSum; // 映像的校检和 WORD Subsystem; // 可执行文件期望的子系统 WORD DllCharacteristics; // DllMain()函数何时被调用,默认为0 DWORD SizeOfStackReserve; // 初始化时的栈大小 DWORD SizeOfStackCommit; // 初始化时实际提交的栈大小 DWORD SizeOfHeapReserve; // 初始化时保留的堆大小 DWORD SizeOfHeapCommit; // 初始化时实际提交的堆大小 DWORD LoaderFlags; // 与调试有关,默认为0 DWORD NumberOfRvaAndSizes; // 下边数据目录的项数,这个字段自Windows NT 发布以来 // 一直是16 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; // 数据目录表 } IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;
一共31个字段成员,
11个没用的
7个重要的:
RVA也叫作OEP(7)
默认加载基址(10)Image Base
内存对齐(11) 一般是0x1000
文件对齐(12)一般是0x200
把文件加载进内存,所需要的内存大小(20)
所有头部大小(21)
数据目录的个数(30)
1个极度重要的:数据目录表(31)
IMAGE_NUMBEROF_DIRECTORY_ENTRIES------0X10-----一般情况下有16个数据目录,扩展头的大小一般为0xE0
在010Editor中,文件头显示信息,如下:
在LoadPE工具中,文件头显示信息,如下:
相关文章推荐
- top 详解
- OpenLayers访问Geoserver发布的地图
- Android 系统架构
- 大型网站数据库和其他优化
- Linux 概念架构的理解
- Linux 概念架构的理解
- Docker中进入bash shell命令
- Docker中使用pip2遇到proxy问题的解决(Can't install pip packages inside a docker container)
- Hello Shell
- 夺命雷公狗---ECSHOP---05---goods常用字段总结
- Linux_正则表达式
- 搭建Nginx+Java环境(转)
- 利用Nginx做负载均衡
- Linux 学习路线图
- 如何在Ubuntu(服务器)装JDK,Tomcat,MySQL
- mac中open用法
- linux 基础
- Linux常用基本命令&Android系统编译命令
- Windows下搭建php7+Apache2.4
- 在opencv3中实现机器学习之:利用正态贝叶斯分类