(3)节头表(Section Header Table):由一组section header组成。section header描述了文件中节(section)的信息,比如节的类型、大小、加载到内存中的地址、在文件中的偏移等。 (4)节(Sections):包含了实际的数据和代码,比如.text中保存了程序的代码,.data中保存了初始化不为0全局变量,.rodata中保存了一些只读的数...
其实是这样的,在一个 ELF 文件中,存在很多个 Sections,这些 Sections 的具体信息,是在Program header table或者Section head table中进行描述的。 就拿Section head table来举例吧: 假如一个 ELF 文件中一共存在4个 Section:.text、.rodata、.data、.bss,那么在Section head table中,将会有4个 Entry(条目)来...
此外,二者在ELF Section Header Table中的Type也是不同的,.dynsym的Type为SHT_DYNSYM,而.symtab为SHT_SYMTAB。 LLVM源码中定义了.dynsym/.symtab数据表中单个符号entry的字段结构,以ELF64为例: // llvm/include/llvm/BinaryFormat/ELF.hstructElf64_Sym{Elf64_Wordst_name;// 符号名,st_name是指向相应字符串s...
我们写汇编程序时,用.text,.bss,.data这些指示,都指的是section,比如.text,告诉汇编器后面的代码放入.text section中。 目标代码文件中的section和section header table中的条目是一一对应的。section的信息用于链接器对代码重定位。 而文件载入内存执行时,是以segment组织的,每个segment对应ELF文件中program header tab...
Section Header Table顾名思义,是由一个个Section Header组成的Table,其第一个Section Header的地址可以在ELF Header中找到。每一个都有一下十个属性 代码语言:javascript 代码运行次数:0 运行 AI代码解释 typedef struct{Elf32_Word sh_name;//节区名,是节区头部字符串表节区(Section Header String Table Sectio...
section header table:段表头信息 table:表信息 对于可执行程序,还有program header table信息。 一、a.o的ELF分析 下面来分析生成的a.o的ELF信息。 1、ELF头 elf头的结构体,在/usr/include/elf.h文件中,分32位版本和64位版本。我在结构体成员的注释中,将成员的偏移给加上去了,方便后面分析。
ELF 文件头(File Header):位于文件最开始,包含了整个文件的结构信息,例如是ELF 幻数,是哪种 ELF 文件,程序头表、节头表的地址等。 程序头表(Program Header Table):描述了所有段的信息 节头表(Section Header Table):描述了所有节的信息 本文不会解释结构体每个元素,而是利用 readelf 工具解读。如果需要详细到...
描述ELF header 的结构体: 描述Program header table 的结构体: 描述Section header table 的结构体: ELF header(ELF 头) 头部内容,就相当于是一个总管,它决定了这个完整的 ELF 文件内部的所有信息,比如: 这是一个 ELF 文件; 一些基本信息:版本,文件类型,机器类型; ...
ELF头(ELF header):放在ELF文件开头,描述该文件信息。 节头表(Section header table):包含对节(section)的描述,对于可重定位文件(relocatable files)是必须的,对于可装载文件(loadable files)是可选的。 程序头表(Program header table):对于可装载文件(loadable files)是必须的,对于可重定位文件(relocatable files...
程序头部表(Program Header Table),如果存在的话,告诉系统如何创建进程映像。 节区头部表(Section Header Table)包含了描述文件节区的信息,比如大小,偏移等。 ELF文件头(ELF Header) 定义了ELF魔数、硬件平台等、 入口地址、程序头入口和长度、 段表的位置和长度及段的数量、 段表字符串表(.shstrtab)所在的段在...