【发布时间】:2013-06-07 10:50:16
【问题描述】:
我在字符串表中找到了“.dynsym”,得到了索引。 然后我找到了 sh_name = index && sh_type = SHT_DYNSYM 的部分。 所以我得到了 sh_offset = 464 和 sh_size = 64。 但是您可以在附图中看到,在偏移量 464 上只有零。
我假设导入表从偏移量 528 开始。问题是:如何计算它 %)
【问题讨论】:
标签: linux elf import-table
我在字符串表中找到了“.dynsym”,得到了索引。 然后我找到了 sh_name = index && sh_type = SHT_DYNSYM 的部分。 所以我得到了 sh_offset = 464 和 sh_size = 64。 但是您可以在附图中看到,在偏移量 464 上只有零。
我假设导入表从偏移量 528 开始。问题是:如何计算它 %)
【问题讨论】:
标签: linux elf import-table
但是您可以在附图中看到,偏移量 464 上只有零。
错误:01、20、29、12 等在我上次检查时不是“只有零”。
我想导入表从偏移量 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中的偏移量。
【讨论】: