如何正确获取Elf文件的文本部分并显示其内容?我已经尝试过,但只显示了250个字节的数据,但是当我使用readelf命令时,它会显示更多。我认为我只是获取段落时偏移量设置错误。请问正确的方法是什么?
更新: 我添加了代码,现在想要打印符号名称时出现分段错误。
如何正确获取Elf文件的文本部分并显示其内容?我已经尝试过,但只显示了250个字节的数据,但是当我使用readelf命令时,它会显示更多。我认为我只是获取段落时偏移量设置错误。请问正确的方法是什么?
更新: 我添加了代码,现在想要打印符号名称时出现分段错误。
Elf32_Sym
记录)。请参见answer。
更新2:
这段代码: if(strcmp(name, ".symtab") == 0) {
//symbolTable = (Elf32_Sym*)sectHdr.sh_addr;
symtab = (Elf32_Shdr*) §Hdr;
}
if(strcmp(name, ".strtab") == 0) {
strtab = (Elf32_Shdr *) §Hdr;
}
data
变量是一个指向整个文件被读取到的缓冲区的 char*
。因此,ELF
头部 elf
是 (struct Elf64_Ehdr *)data
,而节头 shdr
是 (Elf64_Shdr *)(data + elf->e_shoff)
,等等。 - Employed Russian