我正在寻找一种很好的方法来枚举所有ELF部分及其当前二进制文件的地址以及当前进程可能已加载的所有共享对象.
我知道dl_iterate_phdr()的存在,这给了我一个易于使用的ELF段列表,但我正在寻找ELF段,所以这对我来说不是正确的.
我不关心可移植性,只要它在带有ELF的Linux上运行我很高兴!
任何暗示赞赏!
解决方法:
我假设您正在尝试以编程方式从C/C++程序访问此信息.我怀疑你应该能够用GNU Binary File Descriptor library(BFD)做你想要的,它用于实现GNU链接器,objdump等(它还有一个Wikipedia article).特别参见本手册的section 2.6,它是关于部分的. BFD创建一个链接列表“struct bfd_section”,可以通过struct bfd的“sections”成员访问.我认为您应该能够在argv [0]上使用bfd_fopen打开当前二进制文件. BFD随binutils发货.