Linux 在ELF文件中搜索.init节
如何找到节Linux 在ELF文件中搜索.init节,linux,elf,string-table,Linux,Elf,String Table,如何找到节.init? 节头有字段Elf32\u Word sh\u name。因此,我想我必须遍历所有部分才能找到一个名为的。init但是sh_name不是一个字符数组。它是字符串表中条目的索引。 字符串表在哪里?ELF头中有字段elfHdr.e_shstrndx。它是字符串表所在部分的索引。 所以为了计算字符串表的偏移量,我使用下面描述的公式 offset = ((elfHdr.e_shstrndx)*elfHdr.e_shentsize)+elfHdr.e_shoff, where
.init
?
节头有字段Elf32\u Word sh\u name
。因此,我想我必须遍历所有部分才能找到一个名为的。init
但是sh_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.
但结果的偏移量不是字符串表的正确偏移量。我在各种文件上都试过了。
是否有其他方法可以确定节是否为
.init
看来你几乎做对了
您计算的
偏移量
是字符串表节的节头的文件偏移量(以字节为单位)。同样,这是本节标题的开头,它将是Elf32\u Shdr
类型的结构。现在您应该阅读它的sh_offset
,这将是您要查找的字符串列表的偏移量。看起来您几乎正确了
您计算的偏移量
是字符串表节的节头的文件偏移量(以字节为单位)。同样,这是本节标题的开头,它将是Elf32\u Shdr
类型的结构。现在您应该阅读它的sh_offset
,这将是您要查找的字符串列表的偏移量