Так что я смог получить sh_name, используя урок Elf здесь: http://wiki.osdev.org/ELF_Tutorial и этот вопрос: получение члена sh_name в файле elf заголовка раздела, но при использовании того же метода, чтобы получить остальные поля в заголовке раздела, я не получаю такой же вывод, как при вызове readelf -S
на объектном файле я анализирую. Я распечатываю приведенную строку следующего:
sh_strtab_p + shdr[i].sh_offset
и я ничего не получаю, когда делаю. Это проблема кастинга? Должен ли я использовать его как int или как что-то подобное? Я думал, что это будет формат строки, так как я предположил, sh_strtab
была связана таблица строк с заголовком раздела.
Итак, получается, что я глупый, и ответ просто конвертировать Elf_Shdr.sh_offset
(который является uint32_t) в гекс, и вы получите то же значение, что и при использовании readelf
, Нет необходимости использовать строковый индекс для чего-либо, кроме имени. Все остальные поля могут быть обработаны таким же образом, и если вам нужно строковое представление флагов и типа, здесь есть таблица, отображающая значение на имя флага / типа: https://docs.oracle.com/cd/E19683-01/817-3677/chapter6-94076/index.html.
Других решений пока нет …