【问题标题】:Where is Import Table in ELF file?ELF文件中的导入表在哪里?
【发布时间】: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


    【解决方案1】:

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

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

    我想导入表从偏移量 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中的偏移量。

    【讨论】:

    • спасибо заответ。但是在偏移量 464 上没有 Elf32_Sym 记录。 sh_offset = 464 我从 .dynsym 部分的标题中获得。奇怪的是 sh_size = 64 并且同时 sizeof(Elf32_Sym) = 16。
    • 我刚刚想到了一个想法。可能这 64 字节是 4 条记录(Elf32_Sym)?
    猜你喜欢
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 2013-11-15
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多