我實際上記錄了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