gpt4 book ai didi

import - ELF 格式导入符号的源共享库名称

转载 作者:行者123 更新时间:2023-12-02 05:10:03 25 4
gpt4 key购买 nike

我正在研究将分析 ELF 和 PE 格式(一种学校/研究项目)的目标文件的程序。现在我要处理可执行文件中的动态导入符号。我想找到尽可能多的关于符号的信息。

在 PE 格式中,导入存储在 .idata部分。有几个表具有不同的信息,但对我来说有趣的是,找出哪个库是符号定义的没有问题。总是有共享库的名称,然后是从它导入的符号的名称/序号。

我也想在 ELF 文件中找出这类信息。所有进口/导出都在 .dynsym部分 - 动态符号表。那些被导入的符号被标记为未定义,例如:

00000000      DF *UND*  00000000  GLIBC_2.0   fileno

但是没有信息,这个符号的源文件是什么。所有需要的共享库都列在 .dynamic 中部分,例如:
Dynamic Section:
NEEDED libz.so.1

只有关于符号库的信息是版本字符串 = GLIBC_2.0 .我正在考虑通过这个获得真正的图书馆名称,但是当我查看 objdump -p 的输出时我发现 GLIBC_2.0可以连接多个库:
Version References:
required from libm.so.6:
0x0d696910 0x00 13 GLIBC_2.0
required from libgcc_s.so.1:
0x0b792650 0x00 12 GLIBC_2.0

如果我正确理解 ELF 动态链接过程,应该不可能在 ELF 可执行文件中找到这些信息。导入符号的确切位置由链接器在将所有符号表加载到内存后确定。
但我想在继续之前确定这一点,所以我的问题是:有什么办法可以从 ELF 可执行文件中找出符号共享库的名称?

谢谢你的任何建议。

最佳答案

几个月前,我正在研究非常相似的东西——我能够通过获取 nm 和 readelf 的源来回答我所有的问题。 (见 http://ftp.gnu.org/gnu/binutils/)
我发现这也很有用 -> http://www.skyfree.org/linux/references/ELF_Format.pdf

关于import - ELF 格式导入符号的源共享库名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6668434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com