PE导出表

Scroll Down

概述

所有PE文件都可以有导出表,只是大部分情况下,exe不提供导出表而已。

OptionalHeader指向的DataDirectory[]数组一共有16个,每个都是一样的结构:

VirtualAddress 虚拟偏移地址

size 大小

PEDataDir

NtHeader.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT ],这个数据目录表VirtualAddress指向的就是导出表的地址。

IMAGE_EXPORT_DIRECTORY

typedef struct _IMAGE_EXPORT_DIRECTORY
 {
 DWORD Characteristics;//未使用,总是定义为0
 DWORD TimeDateStamp;//文件生成时间
 WORD MajorVersion;//未使用,总是定义为0
 WORD MinorVersion;//未使用,总是定义为0
 DWORD Name; //模块的真实名称的RVA
 DWORD Base; //基数,加上序数就是函数地址数组的索引值
 DWORD NumberOfFunctions;//导出函数的总数
 DWORD NumberOfNames; //以名称方式导出的函数的总数
 DWORD AddressOfFunctions; // RVA from base of image指向输出函数地址的RVA
 DWORD AddressOfNames; // RVA from base of image指向输出函数名字的RVA
 DWORD AddressOfNameOrdinals; // RVA from base of image向输出函数序号的RVA

 } IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY

PEExportTable

PEExportTable1