我正在编写Linux readelf
命令的简化版本。
我想打印节信息,所以我需要节的名称。在Elf64_Shdr
结构体中,sh_name
变量只指向shstrtab
中的索引。但这似乎不是shstrtab头中的索引。它是对其相关数据的索引。
我想知道如何到达那里,因为ELF头只指向shstrtab
部分头,而不是它的相关数据。从文件的十六进制转储中可以看到,文件的结构如下:
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)
我想错了吗?有没有人能帮我找到这些章节的名字?
2条答案
按热度按时间rqcrx0a61#
我自己找到了解决办法!
要获取节的相关数据,只需在
Elf64_Shdr
结构中使用sh_offset
。如果将sh_offset
添加到文件的起始地址,则直接获得节数据。oaxa6hgo2#
下面的代码可以列出节标题名称。
其输出如下: