目前我正在编写读取elf文件头并打印一些信息的小程序
我有一个名为 buf 的 unsigned char 指针,它指向 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,它会打印正确的值 有人遇到过同样的问题吗?