在 PE 导出中不起作用的条目 table

Entries that are not functions in PE exports table

我查看了特定 DLL 的导出 table 并且我在 table 中看到了一些 st运行ge 条目所以我试图找到一个答案这个问题在 pecoff 规范中并没有找到任何,我希望有人可能有一个。

我在某个 DLL (Qt5Core.dll) 上 运行 一个 dumpbin,发现导出 table 的条目 不是函数 -> 有条目的地址指向 .data 部分和 .rdata 部分...... 例如:

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

似乎是一些 C++ 变量,我想知道为什么它们会出现在导出 table 中? 谢谢!

导出条目不一定是函数。 你可以看看我的 Whosebug 线程:

结论很明确,PE文件也可以导出数据。 没有完美的方法来区分这两者,但一些启发式和运行时操作可以帮助您解决这个问题。 请参阅我上面的 post 以获取更多详细信息(另请阅读评论)。

NumberOfFunctions 此模块导出的总数 functions/symbols。

姓名数 按名称导出的 functions/symbols 个数。该值不是模块中 ALL functions/symbols 的数量。对于该数字,您需要检查 NumberOfFunctions。该值可以为 0。在这种情况下,模块可能仅按序号导出。如果第一种情况没有function/symbol导出,数据目录下导出table的RVA会是0。

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

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