ELF节

作者: 夕阳西下几时回_ | 来源:发表于2021-05-01 20:57 被阅读0次

ELF节的分类

.text节

.text节是保存了程序代码指令的代码节一段可执行程序,如果存在Phdr,则.text节就会存在于text段中。由于.text节保存了程序代码,所以节类型为SHT_PROGBITS

.rodata节

rodata节保存了只读的数据,如一行C语言代码中的字符串。由于.rodata节是只读的,所以只能存在于一个可执行文件的只读段中。因此,只能在text段(不是data段)中找到.rodata节。由于.rodata节是只读的,所以节类型为SHT_PROGBITS

.plt节(过程链接表)

.plt节也称为过程链接表(Procedure Linkage Table)其包含了动态链接器调用从共享库导入的函数所必需的相关代码。由于.plt节保存了代码,所以节类型为SHT_PROGBITS

.data节

.data节存在于data段中,其保存了初始化的全局变量等数据。由于.data节保存了程序的变量数据,所以节类型为SHT_PROGBITS

.bss节

.bss节存在于data段中,占用空间不超过4字节,仅表示这个节本省的空间。.bss节保存了未进行初始化的全局数据。程序加载时数据被初始化为0,在程序执行期间可以进行赋值。由于.bss节未保存实际的数据,所以节类型为SHT_NOBITS

.got.plt节(全局偏移表-过程链接表)

.got节保存了全局偏移表.got节和.plt节一起提供了对导入的共享库函数的访问入口,由动态链接器在运行时进行修改。由于.got.plt节与程序执行有关,所以节类型为SHT_PROGBITS

.dynsym节(动态链接符号表)

.dynsym节保存在text段中。其保存了从共享库导入的动态符号表。节类型为SHT_DYNSYM

.dynstr节(动态链接字符串表)

.dynstr保存了动态链接字符串表,表中存放了一系列字符串,这些字符串代表了符号名称,以空字符作为终止符。

.rel.*节(重定位表)

重定位表保存了重定位相关的信息,这些信息描述了如何在链接或运行时,对ELF目标文件的某部分或者进程镜像进行补充或修改。由于重定位表保存了重定位相关的数据,所以节类型为SHT_REL

.hash节

.hash节也称为.gnu.hash,其保存了一个用于查找符号的散列表。

.symtab节(符号表)

.symtab节是一个ElfN_Sym的数组,保存了符号信息。节类型为SHT_SYMTAB

.strtab节(字符串表)

.strtab节保存的是符号字符串表,表中的内容会被.symtabElfN_Sym结构中的st_name引用。节类型为SHT_STRTAB

.ctors节和.dtors节

.ctors构造器)节和.dtors析构器)节分别保存了指向构造函数和析构函数的函数指针,构造函数是在main函数执行之前需要执行的代码;析构函数是在main函数之后需要执行的代码

关于符号表的两种说明

符号是对某些类型的数据或代码(如全局变量或函数)的符号引用,函数名或变量名就是符号名

Tips:.dynsym保存了引用来自外部文件符号的全局符号。如printf库函数。.dynsym保存的符号是.symtab所保存符合的子集,.symtab中还保存了可执行文件的本地符号。如全局变量,代码中定义的本地函数等。

image-20200625173956884

ALLOC表示有该标记的节会在运行时分配并装载进入内存,而.symtab不是在运行时必需的,因此不会被装载到内存中。.dynsym保存的符号只能在运行时被解析,因此是运行时动态链接器所需的唯一符号.dynsym对于动态链接可执行文件的执行是必需的,而.symtab只是用来进行调试和链接的。

相关文章

  • 第13课 elf文件结构-段 节 信息

    ELF文件结构: ELF文件整体结构: readelf的使用: ELF文件头信息 ELF文件节信息 文件段信息

  • ELF节

    ELF节的分类 .text节 .text节是保存了程序代码指令的代码节。一段可执行程序,如果存在Phdr,则.te...

  • Return-to-dl-resolve

    前置知识:ELF可执行文件由ELF头部,程序头部和其对应的段,节头部表和其对应的节组成。ELF文件结构如果想深入了...

  • Linux[ELF]: ELF文件结构简单梳理

    Linux[ELF]: ELF文件结构简单梳理 一.编译过程-ELF文件生成 二.ELF的文件概述 2.1 4种...

  • 005.使用IAR生成HEX与ELF文件

    使用IAR生成HEX与ELF文件 [if !supportLists]1、[endif]什么是ELF文件 ELF:...

  • ELF 和DEX 文件格式详解

    ELF 文件格式 linux Elf 文件格式,windows pe文件 ELF 文件由三部分组成: ELF文件头...

  • ELF文件详解

    ELF文件详解 ELF文件分为四个部分:elf header,program header table,secti...

  • 基础篇

    基础篇 ELF文件 前言 ELF文件类型 ELF可执行文件 组成: 知识点:

  • 程序编译链接(三)-- ELF文件格式

    ELF文件头 ELF目标文件格式的最前部是ELF文件头,它包好了描述整个文件的基本属性,比如ELF文件版本,目标机...

  • Golang标准库——debug/elf

    elf elf包实现了对ELF文件的访问。 Constants 索引到Header.Ident数组。 精灵蹦床的魔...

网友评论

      本文标题:ELF节

      本文链接:https://www.haomeiwen.com/subject/wflzrltx.html