В файле ELF есть две строковые таблицы:
.strtab
, который содержит имена символов. .shstrtab
( S ection H eader Str ing Tab le), который содержит названия разделов.
Если вы хотите использовать 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 за указание лучшего способа получения заголовкаразмер.