我正在尝试获取 elf 文件每个部分的偏移量和数据。我已经有了这段代码的部分名称:
#include <elf.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
int filesize(int fd)
{
return (lseek(fd, 0, SEEK_END));
}
void print_section(Elf64_Shdr *shdr, char *strTab, int shNum)
{
int i;
for(i = 0; i < shNum; i++)
printf("%02d: %s\n", i, &strTab[shdr[i].sh_name]);
}
int main(int ac, char **av)
{
void *data;
Elf64_Ehdr *elf;
Elf64_Shdr *shdr;
int fd;
char *strtab;
fd = open(av[1], O_RDONLY);
data = mmap(NULL, filesize(fd), PROT_READ, MAP_SHARED, fd, 0);
elf = (Elf64_Ehdr *) data;
shdr = (Elf64_Shdr *) (data + elf->e_shoff);
strtab = (char *)(data + shdr[elf->e_shstrndx].sh_offset);
print_section(shdr, strtab, elf->e_shnum);
close(fd);
return 0;
}
但是我找不到获取每个部分的数据或其起始偏移量的方法。谢谢你的帮助