一、导入(出)表
导出表在扩展PE头_IMAGE_DATA_DIRECTORY DataDirectory[16]中,每个结构体都是8个字节
二、导出表
IMAGE_DIRECTORY_ENTRY_EXPORT
struct _IMAGE_DATA_DIRECTORY {
0x00 DWORD VirtualAddress; //导出表在哪里
0x04 DWORD Size; //导出表大小(包含导出表所有表和子表所有的数据大小)
};
三、导出表结构(40个字节)
struct _IMAGE_EXPORT_DIRECTORY {
0x00 DWORD Characteristics; // 未使用
0x04 DWORD TimeDateStamp; //时间戳
0x08 WORD MajorVersion; // 未使用
0x0a WORD MinorVersion; // 未使用
0x0c DWORD Name; // 指向该导出表文件名字符串
0x10 DWORD Base; // 导出函数起始序号
0x14 DWORD NumberOfFunctions; // 所有导出函数的个数
0x18 DWORD NumberOfNames; // 以函数名字导出的函数个数
0x1c DWORD AddressOfFunctions; // 导出函数地址表RVA
0x20 DWORD AddressOfNames; // 导出函数名称表RVA
0x24 DWORD AddressOfNameOrdinals; // 导出函数序号表RVA
};
四、演示
导出4个函数,1个序号,3个有名字的
EXPCRTS
Plus @12
Sub @15 NONAME
Mul @13
Div @16
DWORD AddressOfFunctions(导出函数地址表RVA) :5AB8
函数地址表和函数名称表都是4字节的 ,序号表是2字节的