节标题列表指向哪个字符串表?

时间:2018-06-12 15:00:37

标签: linux file binary elf

Elf文件可以有多个String表,但Section Headers sh_name字段列表是此表的索引。文件如何知道要引用哪个字符串表?

1 个答案:

答案 0 :(得分:1)

ELF文件中有两个字符串表:

  1. .strtab,其中包含符号'。
  2. .shstrtab S H eader Str ing 标签文件),其中包含部分的名称。
  3. 如果您想使用sectionHeader.sh_name,那么您可能正在查找.shstrtab表中的部分名称。它可以使用以下代码获得(显然是64位):

    Elf64_Ehdr* header = (Elf64_Ehdr*) map;
    Elf64_Shdr* stringTable = (Elf64_Shdr*) (map + header->e_shoff +
                                 header->e_shstrndx * header->e_shentsize);        
    char* sectionName = map + stringTable->sh_offset + sectionHeader->sh_name;
    
    // 'map' is a pointer to the beginning of your mapped ELF file
    


    感谢 @Employed Russian 指出更好的方法来检索标题的大小。