На какую таблицу строк указывает список заголовков разделов? - PullRequest
0 голосов
/ 12 июня 2018

Файл Elf может иметь несколько Строковых таблиц, однако список полей заголовков разделов sh_name является индексом этой таблицы.Как файл узнает, к какой таблице строк обращаться?

1 Ответ

0 голосов
/ 13 июня 2018

В файле ELF есть две строковые таблицы:

  1. .strtab, который содержит имена символов.
  2. .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 за указание лучшего способа получения заголовкаразмер.

...