我实际上记录了nm和objdump程序。我已经完成objdump,它运作良好,所以我现在正在nm上工作。 我试图找到符号表,为了做到这一点我通过节头表像这样运行:找不到符号表(Elf格式)(C编程)
while (i < elf->e_shnum)
{
if (shdr[i].sh_type == SHT_SYMTAB)
printf("Symbol table found\n");
i++;
}
我从来没有经历过这种情况下运行,已经尝试过在我的objdump程序和同样的问题,找不到SHT_SYMTAB。
这是我应得的节头表:
Elf64_Shdr *shdr;
unsigned char *shstrtab;
void *data;
Elf64_Ehdr *elf;
//I reduced the code to make it more readable
data = mmap(NULL, filesize(fd), PROT_READ, MAP_SHARED, fd, 0);
elf = ((Elf64_Ehdr *)data);
shdr = ((Elf64_Shdr *)(data + elf->e_shoff));
shstrtab = ((unsigned char *)(data + shdr[elf->e_shstrndx].sh_offset));
我不知道如果我这样做是正确的(即使我objdump的工作完美),或如果我没有理解纳米如何工作
感谢您的帮助:)
我实际上用void *替换了Ehdr中的一个数据指针,但仍然不工作 – Drumz