type
status
date
slug
summary
tags
category
icon
password
记录一下ELF的各个结构的作用:

数据表示形式:

名称 大小 对齐 目的 Elf32_Addr 4 4 无符号程序地址 Elf32_Half 2 2 无符号中等整数 Elf32_Off 4 4 无符号文件偏移 Elf32_SWord 4 4 有符号大整数 Elf32_Word 4 4 无符号大整数 unsigned char 1 1 无符号小整数

1、ELF Header:

解释一下这些结构名个意义: 这个是e_type的值
 

2、节区:

 
节区中包含目标文件中的所有信息,除了:ELF 头部、程序头部表格、节区头部 表格。节区满足以下条件: (1). 目标文件中的每个节区都有对应的节区头部描述它,反过来,有节区头部不意 味着有节区。 (2). 每个节区占用文件中一个连续字节区域(这个区域可能长度为 0)。 (3). 文件中的节区不能重叠,不允许一个字节存在于两个节区中的情况发生。 (4). 目标文件中可能包含非活动空间(INACTIVE SPACE)。这些区域不属于任何 头部和节区,其内容未指定。
 

节区头部表格:

 
1、sh_type:
  • 指示节的类型。常见的类型包括:
    • SHT_PROGBITS: 程序相关的数据
    • SHT_SYMTAB: 符号表
    • SHT_STRTAB: 字符串表
    • SHT_RELA: 重新定位表
    •  
2、索引为0的节区头部
notion image
3、sh_type 字段
notion image
notion image
 
4、sh_flags
notion image
 
5、特殊节区:
notion image
notion image
notion image
 

3、字符串表:

 
字符串表节区包含以 NULL(ASCII 码 0)结尾的字符序列,通常称为字符串。ELF 目标文件通常使用字符串来表示符号和节区名称。对字符串的引用通常以字符串在字符 串表中的下标给出。

4、符号表:

 
notion image
 

特殊的节区索引

notion image
 

5、程序头部:

 
可执行文件或者共享目标文件的程序头部是一个结构数组,每个结构描述了一个段或者系统准备程序执行所必需的其它信息。目标文件的“段”包含一个或者多个“节区”,也就是“段内容(Segment Contents)”。程序头部仅对于可执行文件和共享目标文件 有意义。 可执行目标文件在 ELF 头部的 e_phentsize 和 e_phnum 成员中给出其自身程序头部的大小。程序头部的数据结构如下图:
 
notion image
 
2024强网杯re复现算法学习模板——最短路径
Loading...