【发布时间】:2019-09-19 20:36:58
【问题描述】:
我想按以下格式打印有关IMAGE_EXPORT_DIRECTORY 的信息:
<Name1>,<Ordinal1>,<FileAddress1>
我知道这个 IMAGE 由 3 个数组组成:
- AddressOfFunctions -(导出地址表,每个元素都是一个RVA)
- AddressOfNames -(导出名称指针表,每个元素也是一个 RVA - 有序?)
- AddressOfNameOrdinals(数组元素 - Base 表示 EAT 中的序数)
但是我如何访问这些表格以便在一行中打印每个元素的信息?另外,当 NumberOfNames
我已经知道如何访问 IMAGE_EXPORT_DIRECTORY
PIMAGE_DATA_DIRECTORY pFirstDir = &(pOptionalHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT]);
if (pFirstDir->Size > 0)
{
PIMAGE_EXPORT_DIRECTORY pExportDir = (PIMAGE_EXPORT_DIRECTORY)((BYTE *)pDosHeader + ConvertRvaToOffset(pFirstDir->VirtualAddress, pNTHeaders));
}
如果有人能解释这些数组的实际工作原理或如何访问它们的算法,将不胜感激。
【问题讨论】:
-
NumberOfNames < NumberOfFunctions表示存在无名函数,仅按序号导出 -
@RbMm 我知道,我的意思是我怎么能访问它们。该字段变为 0 ?你有一些我可以参考的文件吗?
-
你想访问什么?
-
名称和序数(每个函数的
对) -
在什么问题访问它?你有指向名称 rva 数组的指针(
AddressOfNames)和指向索引的指针(AddressOfNameOrdinals)
标签: winapi portable-executable