1

我怎样才能找到部分.init?节标题有字段Elf32_Word sh_name。所以我想我必须遍历所有部分才能找到一个名称.initsh_name不是字符数组的部分。它是字符串表中的条目索引。字符串表在哪里?ELF 标头中有字段elfHdr.e_shstrndx。它是字符串表所在的部分的索引。所以要计算字符串表的偏移量,我使用下面描述的公式。

offset = ((elfHdr.e_shstrndx)*elfHdr.e_shentsize)+elfHdr.e_shoff,  
where 
elfHdr.e_shstrndx = index where we can find .shstrtab
elfHdr.e_shentsize = Size of each Section Header
elfHdr.e_shoff = Offset at which section header starts.

但结果偏移量不是字符串表的正确偏移量。我已经在各种文件上尝试过。可能有另一种方法来确定 section 是否.init存在?

4

1 回答 1

1

看来你几乎做对了。

offset您计算的是字符串表部分的部分标题的文件偏移量(以字节为单位)。同样,这是本节标题的开头,它将是一个 type 的结构Elf32_Shdr。现在您应该阅读它sh_offset将是您要查找的字符串列表的偏移量。

于 2013-06-10T18:44:14.697 回答