ELF文件中的导入表在哪里?

我在String Table中find了“.dynsym”,得到了索引。 然后我find了sh_name = index && sh_type = SHT_DYNSYM的部分。 所以我得到了sh_offset = 464和sh_size = 64.但是你可以在附图中看到,在偏移464上只有零。

我想导入表开始偏移量528.问题是:如何计算它%)

在这里输入图像描述

但是你可以在附图中看到,在偏移464上只有零。

错误: 01等我上次检查时不是 “只有零”。

我想,导入表开始偏移量528

不,不是的。 出于某种原因,您期望在ELF文件中找到Microsoft PE风格的导入表。 这不是在那里。

ELF中的导入表的等价物包含在两个表中。 一个包含Elf{32,64}_Sym固定大小的记录:

 typedef struct { Elf32_Word st_name; /* Symbol name (string tbl index) */ Elf32_Addr st_value; /* Symbol value */ Elf32_Word st_size; /* Symbol size */ unsigned char st_info; /* Symbol type and binding */ unsigned char st_other; /* Symbol visibility */ Elf32_Section st_shndx; /* Section index */ } Elf32_Sym; 

并包含在.dynsym部分。

另一个表包含在.dynstr部分(在你的文件中,在偏移量528处开始),并且只有由NUL字符分隔的(可变长度)字符串。

第一个表中的.st_name引用.dynstr偏移量。