в настоящее время я пишу небольшую программу, которая читает заголовок файла elf и выводит некоторую информацию
У меня есть беззнаковый указатель char, называемый buf, который указывает на место, где в памяти находится файл elf (Я использовал mmap для сопоставления его с памятью ), затем я привожу его к соответствующему указателю заголовка elf
Elf32_Ehdr *ehdr = (Elf32_Ehdr *)buf;
После этого я хочу получить адрес таблицы заголовков программы, я делаю это следующим образом
Elf32_Phdr *ptbl = (Elf32_Phdr *) (buf + ehdr->e_phoff)
Как я заметил значение указателя ptbl не меняется, и когда я пытаюсь напечатать значение члена e _phoff следующим образом
fprintf( stdout, "Offset of program headers : %d\n", ehdr->e_phoff);
, я получаю ноль То же самое происходит, когда я пытаюсь напечатать количество заголовков программы, а количество заголовков разделов -всегда равно нулю Если я использую linux readelf, он печатает правильные значения Кто-нибудь сталкивался с такой же проблемой?