Чтение заголовка ELF в C

в настоящее время я пишу небольшую программу, которая читает заголовок файла 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, он печатает правильные значения Кто-нибудь сталкивался с такой же проблемой?

7
задан Rustam Issabekov 27 April 2012 в 14:49
поделиться