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