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的节区头部

3、sh_type 字段


4、sh_flags

5、特殊节区:



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

特殊的节区索引

5、程序头部:
可执行文件或者共享目标文件的程序头部是一个结构数组,每个结构描述了一个段或者系统准备程序执行所必需的其它信息。目标文件的“段”包含一个或者多个“节区”,也就是“段内容(Segment Contents)”。程序头部仅对于可执行文件和共享目标文件
有意义。
可执行目标文件在 ELF 头部的 e_phentsize 和 e_phnum 成员中给出其自身程序头部的大小。程序头部的数据结构如下图:

- Author:xiaowaaa
- URL:https://www.xiaowaaa.asia//article/1305df8d-8884-8043-b7e5-e47e1ac17592
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!