1

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

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

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)

我想错了吗?任何人都可以指导我获取部分名称吗?

4

1 回答 1

1

我自己找到了解决方案!

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

于 2019-12-02T14:37:20.717 回答