Поиск раздела.init в файле ELF

Как я могу найти раздел .init? Заголовок раздела имеет поле Elf32_Word sh_name, Итак, я полагаю, что мне нужно пройти через все разделы, чтобы найти один с именем .init Но sh_name это не массив символов. Это индекс записи в таблице строк. Где находится Струнный Стол? Есть поле elfHdr.e_shstrndx в заголовке ELF. Это индекс раздела там, где находится таблица строк. Поэтому для вычисления смещения таблицы строк я использую формулу, которая описана ниже.

offset = ((elfHdr.e_shstrndx)*elfHdr.e_shentsize)+elfHdr.e_shoff,  
where 
elfHdr.e_shstrndx = index where we can find .shstrtab
elfHdr.e_shentsize = Size of each Section Header
elfHdr.e_shoff = Offset at which section header starts.

Но полученное смещение не является правильным смещением таблицы строк. Я пробовал это на разных файлах. Может быть, есть другой способ определить, является ли раздел .init или нет?

1 ответ

Решение

Кажется, ты почти все понял правильно.

offset Вы вычислили смещение файла в байтах заголовка раздела строки таблицы строк. Опять же, это начало заголовка этого раздела, и это будет структура типа Elf32_Shdr, Теперь вы должны прочитать его sh_offset и это будет смещение в списке строк, которые вы ищете.

Другие вопросы по тегам