As far as I know 。dynsym部分是按顺序排列的一堆ElfN_Sym结构,因此我试图转储所有符号的st_name,但显然我解析的方式出了问题文件。
我做的第一件事是通过迭代节头并通过字符串表比较sh_name字段来获得。dynsym节的索引。然后,我通过使用sh_addr字段获得了。dynsym的地址:
Elf64_Sym *symbol = (Elf64_Sym *) shdr[i].sh_addr;
printf("%s\n", symbol->st_name);
但是由于某种原因,这是SEGFAULTing,我做错了什么,做这件事的正确方法是什么?另外,使用shdr [i] .sh_addr和&shdr [i]之间有区别吗?
但是出于某种原因,这是SEGFAULTing,