c - 如何获取shstrtab的字符串?

标签 c elf readelf

我正在编写 Linux readelf 命令的简化版本。

我想打印部分信息,所以我需要部分的名称。在 Elf64_Shdr 结构中,sh_name 变量仅将我指向 shstrtab 中的索引。但这似乎不是 shstrtab header 中的索引。它是相关数据的索引。

我想知道如何到达那里,因为 ELF header 仅将我指向 shstrtab 部分 header ,而不是其关联的数据。从文件的十六进制转储中可以看到,文件的结构如下:

ELF HEADER 
phdr1
phdr2
segment1
segment2
shstrtab strings (i want this address, to make use of the sh_name indices)
shdr1
shdr2
shdr3 (this is the shstrtab section)

我这样想有错吗? 有人可以指导我获取部分名称吗?

最佳答案

我自己找到了解决方案!

要获取第一个部分的关联数据,只需使用 Elf64_Shdr 结构中的 sh_offset 即可。如果将 sh_offset 添加到文件的起始地址,则可以直接获取节数据。

关于c - 如何获取shstrtab的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59140703/

相关文章:

linux - 共享 Linux 二进制文件

regex - Linux readelf 显示具有不同数字系统(十六进制和十进制)的对象大小

c++ - Unix 数据报套接字仅适用于第一帧

c - 在 eclipse (Fedora) 上的 c 程序中未定义对 pthread_create 的引用

c - 在windows上添加openssl c语言库

c - 在 C 中使用信号量和共享内存的读写器

python 脚本转储 ELF(核心和输出)?

Linux 可执行文件格式。规范在哪里?

linux - readelf 与 objdump : why are both needed