3

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

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

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

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

4

2 回答 2

2

NumberOfFunctions 此模块导出的函数/符号总数。

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

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

来源:http ://win32assembly.programminghorizo​​n.com/pe-tut7.html

于 2017-09-25T08:14:40.093 回答
1

导出条目不一定是函数。你可以看看我的stackoverflow线程:PE - Distinguish data from function export

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

于 2016-11-07T16:12:52.840 回答