我正在编写 Linux readelf
命令的简化版本。
我想打印部分信息,所以我需要部分的名称。在 Elf64_Shdr
结构中,sh_name
变量仅将我指向 shstrtab
中的索引。但这似乎不是 shstrtab header 中的索引。它是相关数据的索引。
我想知道如何到达那里,因为 ELF header 仅将我指向 shstrtab
部分 header ,而不是其关联的数据。从文件的十六进制转储中可以看到,文件的结构如下:
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/