我知道在 ELF 中我们有 .dynsym
和 .symtab
,那么如何区分导入和导出,就像在 Windows 的 PE 中,导入和导出都在数据目录中一样,它在 ELF 中是否有相当的等效物?
我知道在 ELF 中我们有 .dynsym
和 .symtab
,那么如何区分导入和导出,就像在 Windows 的 PE 中,导入和导出都在数据目录中一样,它在 ELF 中是否有相当的等效物?
如何区分导入和导出
很简单:任何在动态符号表中的符号(在.dynsym
中),且符号对应的.st_shndx == SHN_UNDEF
(参考特殊的 UND
部分)就是一个导入,其他所有符号都被定义和导出。
请注意,.symtab
并不重要,它可以被完全剥离 -- 动态加载器从未查看过它。