ELF中的字符串表

时间:2012-07-02 08:06:22

标签: elf string-table

  1. 我得到了一些符号,我得到了一个精灵文件的十六进制。我怎么知道这个符号出现在哪个部分?

  2. strtabshstrtab之间的区别是什么?还有一个符号字符串数组?

  3. 当我在名表中获得索引时,它是否在strtabshstrtab中编入索引?

1 个答案:

答案 0 :(得分:10)

对于第一个问题,我们需要正确理解elf文件的hexedit。

关于第二个问题 - strtab代表String Table shstrtab代表Section Header String表。

当我们读取ELF头时,我们看到每个ElfHeader结构都包含一个名为e_shstrndx的成员。这是shstrtab的索引。如果您使用此索引然后从shstrtab读取,则可以找到该部分的名称。

strtab是所有其他引用的字符串表。当您从ELF对象读取符号时,每个SYmbol结构(Elf32_Sym)都有一个名为st_name的成员。这是strtab的索引,用于获取该符号的字符串名称。

请详细说明符号字符串数组?另外,名字表是什么意思?

您可以参考以下链接 - Reading ELF String Table on Linux from C

希望这能回答你的问题。