首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我能按“有地址”来得到符号名吗?

我能按“有地址”来得到符号名吗?
EN

Stack Overflow用户
提问于 2018-10-01 15:25:27
回答 1查看 402关注 0票数 0

现在,我正在使用readelf库开发类似于pyelftools的程序。

我想像下面这样打印这张桌子。

在这里,Offset字段是stderr@GOT地址。

代码语言:javascript
复制
jiwon@jiwon$ readelf -a --wide libstdbuf.so
...
Relocation section '.rel.dyn' at offset 0x454 contains 12 entries:
 Offset     Info    Type                Sym. Value  Symbol's Name
00001c50  00000206 R_386_GLOB_DAT         00000000   stderr@GLIBC_2.0
...

假设我只有未知符号的地址(00001c50)。

我的情况,我想让函数像get_symname_by_GOTaddress一样,从00001c50stderr@GLIBC_2.0进行解析。

问题:,但是我在二进制文件中找不到GOT addresssymbol name之间的任何链接信息。我怎么才能拿到呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-02 14:45:47

.rel.dyn部分中的每个条目至少有以下字段:

代码语言:javascript
复制
r_offset;
r_info;

因此,首先扫描该部分,直到地址匹配条目的r_offset字段为止,然后字段r_info包含(也)符号表的索引,该索引是根据以下内容组成的:

代码语言:javascript
复制
/* for 32bit */
#define ELF32_R_INFO(sym, type)       (((sym)<<8)+(unsigned char)(type))

/* for 64bit */
#define ELF64_R_INFO(sym, type)       (((Elf64_Xword)(sym)<<32)+ \ 
                                        (Elf64_Xword)(type))

因此,您可以提取sym索引,然后从符号表中获取条目,该表具有字段st_name,该字段是字符串表中的索引,字符串表中包含字符表示形式中的符号名。

有关更多信息的链接:

rel.dyn剖面描述 -> 符号表描述 -> 字符串表描述

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

https://stackoverflow.com/questions/52594277

复制
相关文章

相似问题

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