【问题标题】:Printing the symbol table from elf file从elf文件打印符号表
【发布时间】:2015-07-07 21:34:13
【问题描述】:

我正在尝试从 elf 文件中打印符号表。我得到了 .symtab 和 .strtab 部分的偏移量(我用 readelf 进行了交叉检查)。但是程序给出了分段错误。这是有问题的代码:

printf("\n\nSymbol table:");

for(i=0;i<symtab.sh_size/symtab.sh_entsize ;i++)
{
    fseek(ElfFile,symtab.sh_offset+i*symtab.sh_entsize,SEEK_SET);
    fread(&elfSym,1,sizeof elfSym,ElfFile);

    printf("\nSymbol:%s,size:%u",elfSym.st_name+strtab.sh_offset,elfSym.st_size);
}

【问题讨论】:

    标签: segmentation-fault elf


    【解决方案1】:

    这是错误:

    printf("\nSymbol:%s,size:%u",elfSym.st_name+strtab.sh_offset,elfSym.st_size);
    

    sym.st_name 为您提供到符号名称开始处的.strtab 部分的偏移量,strtab.sh_offset 为您提供文件中的偏移量到该部分开始的位置。

    但是添加两个偏移量并没有给你一个可以用%s 打印的内存位置,它给你offset到那个字符串所在的文件。您仍然需要从该偏移量的文件中读取到内存中,然后然后您将能够打印它。

    【讨论】:

      猜你喜欢
      • 2014-07-11
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 2014-11-15
      • 2015-12-20
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多