我一直在研究不明确支持我的操作系统的设备库的实现。特别是,我有一个反汇编的 DLL,以及相当多的支持源代码。那么,函数表/导出表的结构是怎样的呢?
我的理解是 .data
部分的第一个结构是 RVA 表。接下来是通过索引链接到第一个地址表的字符串表。这对我来说很有意义,因为链接器可以在符号和地址之间进行转换。
序数引用的函数如何适应这张图?如何知道哪个函数有这样那样的序号,链接器如何解决这个问题?换句话说,假设其他一些 DLL 导入了 SOME_LIBRARY_ordinal_7
,链接器如何知道要使用哪个函数?
谢谢大家!
编辑 更多信息...
我正在使用 FTDI 库,并且想解决正在调用的函数。特别是,我看到类似这样的内容:
extern FTD2XX_Ordinal_28: near
我如何确定正在引用哪个函数,以及链接器如何执行此操作?
最佳答案
要了解链接器和加载器如何在 Windows 上工作,最容易获得的信息可能来自 Matt Pietrek 十多年前写的一组专栏:
- 1997 年 7 月:http://www.microsoft.com/msj/0797/hood0797.aspx
- 1998 年 4 月:http://www.microsoft.com/msj/0498/hood0498.aspx
- 1999 年 9 月:http://www.microsoft.com/msj/0999/hood/hood0999.aspx
最大最好的一个:
关于windows - 在 DLL 中,函数表的结构是怎样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2307754/