访问ELF字符串表节头

发布于 2024-09-03 06:32:37 字数 503 浏览 9 评论 0原文

假设以下情况:

Elf_Section_Header *sectionHeaderTable //points to the start of a ELF section header table
Elf_Section_Header *symtabHeader  //points to the start of the symtab section header

为什么以下内容没有将我指向关联的字符串表节标题?

Elf_Section_Header *strTabSectionHeader = (Elf_Section_Header *)((char *)sectionHeaderTable + (symtabHeader->strtab_index));

strTabSectionHeader->type == SHT_STRTAB 等于 false

我应该如何指向关联的字符串表节头?

Assume the following:

Elf_Section_Header *sectionHeaderTable //points to the start of a ELF section header table
Elf_Section_Header *symtabHeader  //points to the start of the symtab section header

Why doesn't the following point me to the associated string table section header?

Elf_Section_Header *strTabSectionHeader = (Elf_Section_Header *)((char *)sectionHeaderTable + (symtabHeader->strtab_index));

strTabSectionHeader->type == SHT_STRTAB is equal to false

How should I point to the associated string table section header?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

起风了 2024-09-10 06:32:37

据推测,->strtab_index 结构成员引用了符号表头的 sh_name 成员(如 ELF 规范中所命名)。

这实际上是节头字符串表节内的索引,而不是字符串表的位置。

字符串表存储在它们自己的部分中。节头字符串表特别位于 ELF 头的 e_shstrndx 成员中。这是节头表的索引 - 因此 sectionHeaderTable[elf_header->e_shstrndx] 可能就是您想要的(节头字符串表的节头)。

Presumably the ->strtab_index struct member is referring to the sh_name member of the symbol table header (as named in the ELF spec).

This is actually an index within the section header string table section, not the location of a string table.

String tables are stored in their own sections. The section header string table in particular is located by the e_shstrndx member of the ELF header. This is an index into the section header table - thus sectionHeaderTable[elf_header->e_shstrndx] is likely what you want (the section header for the section header string table).

盛装女皇 2024-09-10 06:32:37

每个二进制文件通常包含三个字符串表 -

1. .dynstr
2. .shstrtab
3. .strtab

在上面的问题中,我们关注的是 .shstrtab,它在展开时代表 - 节标题 STRing TABle。读取 ELF 标头后,我们在 ELF 标头中找到以下字段 - e_shstrndx。这是我们可以找到 .shstrtab 的索引。以下公式可用于计算如何完成 -

offset = ((elfHdr.e_shstrndx)*elfHdr.e_shentsize)+elfHdr.e_shoff

每个参数的含义 -

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.

如果您需要更多详细信息,请评论

Each Binary generally contains three String tables -

1. .dynstr
2. .shstrtab
3. .strtab

IN the above question we are concerned with .shstrtab which when expanded stands for - Section Header STRing TABle. Upon reading the ELF header we find the following field in ELF header - e_shstrndx. This is the index where we can find .shstrtab. Following formula can be used to calculate how it will be done -

offset = ((elfHdr.e_shstrndx)*elfHdr.e_shentsize)+elfHdr.e_shoff

Meaning of each parameter -

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.

PLease comment if u need more details

夜巴黎 2024-09-10 06:32:37

节头的 sh_name 成员保存节头字符串表节的索引,由 ELF 头的 e_shstrndx 成员指定。
ELF 规范

A section header’s sh_name member holds an index into the section header string table section, as designated by the e_shstrndx member of the ELF header.
ELF Specification

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文