如何从elf文件的Section Header中提取所有字段?

时间:2017-04-04 00:48:33

标签: c++ elf readelf

所以我可以在这里使用Elf教程获取sh_name:http://wiki.osdev.org/ELF_Tutorial和这个问题:getting the sh_name member in a section header elf file,但是当使用相同的方法获取节头中的其余字段时,当我在我正在分析的目标文件上调用readelf -S时,我没有得到相同的输出。我正在打印出以下字符串:

sh_strtab_p + shdr[i].sh_offset
当我这样做时,我什么都没得到。这是铸造问题吗?我应该把它作为int而不是类似的东西?我认为这将是一个字符串格式,因为我假设sh_strtab是与节头相关联的字符串表。

1 个答案:

答案 0 :(得分:1)

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