标签:ber cte res ddr date ons direct str typedef
如何定位导出表(这段写的不是很清楚)
在扩展pe头的最后一个成员(16个结构体*8bytes)中查找
导出表的属性在第一个结构体中:
第一个DWORD是导出表的RVA,要先转化成FOA
然后就可以找到导出表结构体
关键结构体:_IMAGE_EXPORT_DIRECTORY
typedef struct _IMAGE_EXPORT_DIRECTORY {
DWORD Characteristics;
DWORD TimeDateStamp;
WORD MajorVersion;
WORD MinorVersion;
DWORD Name;
DWORD Base;
DWORD NumberOfFunctions;
DWORD NumberOfNames;
DWORD AddressOfFunctions; // RVA from base of image
DWORD AddressOfNames; // RVA from base of image
DWORD AddressOfNameOrdinals; // RVA from base of image
} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
重要的有三张表:
函数地址表
函数名称表
序号表(2bytes)
序号表里的成员个数等于函数名称表里的成员个数
查找函数的原理:
API函数:
FARPROC GetProcessAddress(
HMODULE HModule, //dll模块句柄
LPCSTR lpProcName // 函数名
);
查找过程:
标签:ber cte res ddr date ons direct str typedef
原文地址:https://www.cnblogs.com/Mz1-rc/p/14392679.html