ELF(一)介绍
2014-01-11 18:00
423 查看
ELF文件
其中引自<elf.h>,还包含<sys/elf.h>,<linux/elf.h>等,平时引用elf.h就可以了,如果做应用开发,而不是内核开发。数据类型
为了达到平台无关性,下面是内核定义的一些数据类型。/* Type for a 16-bit quantity. */
typedef uint16_t Elf32_Half;
typedef uint16_t Elf64_Half;
/* Types for signed and unsigned 32-bitquantities. */
typedef uint32_t Elf32_Word;
typedef int32_t Elf32_Sword;
typedef uint32_t Elf64_Word;
typedef int32_t Elf64_Sword;
/* Types for signed and unsigned 64-bitquantities. */
typedef uint64_t Elf32_Xword;
typedef int64_t Elf32_Sxword;
typedef uint64_t Elf64_Xword;
typedef int64_t Elf64_Sxword;
/* Type of addresses. */
typedef uint32_t Elf32_Addr;
typedef uint64_t Elf64_Addr;
/* Type of file offsets. */
typedef uint32_t Elf32_Off;
typedef uint64_t Elf64_Off;
/* Type for section indices, which are16-bit quantities. */
typedef uint16_t Elf32_Section;
typedef uint16_t Elf64_Section;
/* Type for version symbolinformation. */
typedef Elf32_Half Elf32_Versym;
typedef Elf64_Half Elf64_Versym;
ELF文件基本布局
ELF文件头 | ELF文件头 |
程序头表 | 程序头表 |
节1 | 段1 |
节2 | 段2 |
节…… | 段…… |
节n | 段n |
节头表 | 节头表 |
灰底为可选,白底为强制
可重定位目标的节
.text 已编译程序的机器代码,主要的机器指令 |
.rodata 只读数据,如printf语句中的格式字串和开关语句的跳转表,不能修改,例如字符串 |
.data 已初始化的全局c变量。局部变量在运行时保存在栈中。例如预先初始化的结构,其中在编译时填充的静态数据。这数据可以在程序运行期间更改。 |
.bss 未初始化的全局变量。不占据空间。程序开始运行前填充0 |
.symtab 保存二进制的符号表,存放程序中定义和引用的函数和全局变量信息。不包含局部变量条目。 |
.rel.text 一个.text节中的位置列表,当链接器把这个目标文件和其他文件结合时需要修改这些位置 |
.rel.data 被模块引用和定义的任何全局变量的重定位信息。 |
.debug 一个调试表,加-g选项,包含局部变量,定义和引用的全局变量,原始c源文件 |
.line 原始c源文件的行号,和.text节中的机器指令之间的映射。-g |
.strtab 字符串表,包含.sytab .debug节中的符号表和头部中节的节的名字。主要包含符号表需要的各个字符串。 |
节头部表 |
介绍:
elf头:
除了标识ELF文件的几个字节之外,ELF头还包含了有个文件类型和大小的有关信息,以及文件加载后的程序执行入口信息。程序头表:
程序头表(programheaeder table)向系统提供了可执行文件的数据在进程虚拟地址空间中的组织方式的相关信息。它还表示了文件可能包含的段数目,段的位置和用途。段:
各个段保持了与文件相关的各种形式的数据,例如,符号表、实际的二进制码、固定值(如字符串)或程序使用的数值常数。节头表:
节头表(sectionheader table)包含了与各段相关的附加信息。举例源程序
相关文章推荐
- ELF(Executable and Linkable Format) 介绍
- Linux中ELF格式文件介绍
- Linux中ELF格式文件介绍
- Linux中ELF格式文件介绍
- ELF文件介绍
- ELF文件介绍
- ELF文件格式概要介绍
- 工具接口标准(TIS)可执行链接格式(ELF)规范-卷I-介绍
- Linux中ELF格式文件介绍
- ELF 文件格式介绍
- ELF文件格式介绍
- Linux中ELF格式文件介绍
- Linux中ELF格式文件介绍
- 可执行文件elf的格式介绍
- Linux中ELF格式文件介绍
- Linux中ELF格式文件介绍
- ELF文件介绍及hook
- Linux中ELF格式文件介绍
- ELF文件格式概要介绍
- ELF (Excutable and Linkable Format) 介绍1