0

所以我能够在这里使用精灵教程获取 sh_name:http ://wiki.osdev.org/ELF_Tutorial和这个问题:在节头精灵文件中获取 sh_name 成员,但是使用相同的方法来获取其余部分在部分标题中的字段中,当我调用readelf -S我正在分析的目标文件时,我没有得到相同的输出。我正在打印出以下字符串:

sh_strtab_p + shdr[i].sh_offset

当我这样做时,我什么也得不到。是选角的问题吗?我应该将其转换为 int 或类似的东西吗?我认为这将是一种字符串格式,因为我假设sh_strtab是与节标题相关联的字符串表。

4

1 回答 1

1

所以,事实证明我很傻,答案就是将Elf_Shdr.sh_offset(这是一个 uint32_t)转换为十六进制,你会得到与使用readelf. 除了名称之外,不需要对任何内容使用字符串索引。所有其他字段都可以以相同的方式处理,如果您想要标志和类型的字符串表示,这里有一个表将值映射到标志/类型的名称:https ://docs.oracle.com/ cd/E19683-01/817-3677/chapter6-94076/index.html

于 2017-04-04T18:49:49.607 回答