在PE导出表中不是函数的条目

Entries that are not functions in PE exports table

本文关键字:函数 PE 导出表      更新时间:2023-10-16

我看过一个特定DLL的导出表,我在表中看到了一些奇怪的条目,所以我试图在pecoff规范中找到这个问题的答案,但没有找到任何,我希望有人可能有一个。

我在某个DLL (Qt5Core.dll)上运行了一个dumpbin,发现导出表有而不是函数 ->的条目,它们的地址指向。data节和。rdata节…例如:

const QAbstractState:: ' vftable' 67366E0C 1470QMetaObject const QEventTransition::staticMetaObject 673C15A8 6160QCoreApplication * QCoreApplication::self 6746180C 5504

看起来像一些c++变量,我想知道为什么它们在导出表中?谢谢!

numberfunctions 该模块导出的函数/符号总数。

NumberOfNames 按名称导出的函数/符号的数量。该值不是模块中所有函数/符号的数量。对于这个数字,您需要检查numberfunctions。取值为0。在这种情况下,模块只能按序号导出。如果第一种情况下没有要导出的函数/符号,则data目录下导出表的RVA为0。

从上面我们得出结论,序数表只列出了实际具有名称的导出的数量。

来源:http://win32assembly.programminghorizon.com/pe-tut7.html

导出条目不一定是函数。你可以看看我的stackoverflow线程:PE -从函数导出中区分数据

结论是明确的,数据也可以从PE文件导出。没有完美的方法来区分两者,但是一些启发式方法和运行时操作可以帮助您解决这个问题。参考我上面的帖子了解更多细节(也可以阅读评论)。