首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >枚举当前加载的所有共享对象的所有ELF部分。

枚举当前加载的所有共享对象的所有ELF部分。
EN

Stack Overflow用户
提问于 2012-02-01 23:01:55
回答 3查看 1K关注 0票数 5

我正在寻找一种很好的方法来枚举当前二进制文件和当前进程可能加载的所有共享对象的所有ELF部分及其地址。

我知道dl_iterate_phdr()的存在,它为我提供了一个易于使用的ELF段列表,但是我正在寻找ELF部分,所以它不是我的正确调用。

我不关心可移植性,只要它在Linux上与ELF一起工作,我就很高兴!

任何暗示都很感激!

EN

回答 3

Stack Overflow用户

发布于 2012-02-01 23:44:53

我假设您正在尝试以编程方式从C/C++程序中访问这些信息。我怀疑您应该能够使用GNU二进制文件描述符库 (BFD)做您想做的事情,它用于实现GNU链接器、objdump等(它还有一个维基百科文章)。特别是参阅手册的第2.6节,它都是关于章节的。BFD创建一个"部分“链接列表,通过结构bfd的”节“成员访问。我认为您应该能够在argv上使用fopen打开当前的二进制文件。BFD船与二值

票数 3
EN

Stack Overflow用户

发布于 2012-02-02 01:36:25

这听起来是个很糟糕的主意,但是如果您对它有合法的使用,我只需要解析/proc/self/maps并打开引用的文件。没有理由相信节头甚至被映射到内存中;很可能,它们位于磁盘上的.data之后,因此在将共享对象映射到内存时将被.bss的零覆盖。

打开文件后,可以使用libbfd,但我将直接使用elf.h。跟踪EhdrShdr表很容易。

票数 3
EN

Stack Overflow用户

发布于 2012-02-01 23:48:36

Read亲自命令可以这样做,例如,readelf -s

这并不简单,所以发布到readelf源代码的链接似乎是最好的选择。其中一个原因是处理标头和节结构需要大量的宏。

8c-source.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9104694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档