我正在编写Linux readelf的简化版本。

我想打印部分信息,所以我需要这些部分的名称。在Elf64_Shdr结构中,sh_name变量仅将我指向shstrtab中的索引。但这似乎不是shstrtab标头中的索引。它是与其关联数据的索引。我想知道如何到达那里,因为ELF标头仅将我指向shstrtab节标头,而不指向其相关数据。从文件的十六进制转储中可以看到,文件的结构如下:

ELF HEADER
phdr1
phdr2
segment1
segment2
shstrtab strings (i want this address, to make use of the sh_name indices)
shdr1
shdr2
shdr3 (this is the shstrtab section)


我在想这个错吗?
有人可以指导我获得部分名称吗?

最佳答案

我自己找到了解决方案!

要获得节的相关数据,只需在其Elf64_Shdr结构中使用sh_offset即可。如果将sh_offset添加到文件的起始地址,则可以直接获取节数据。

关于c - 如何获取shstrtab的字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59140703/

10-09 07:04