大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
可执行链接格式 ( Executable and Linking Format)最初是由 UNIX 系统实验室 ( UNIXSystem Laboratories, USL)开发并发布, 作为应用程序二进制接口 ( Application BinaryInterface, ABI)的一部分,它是一种常用的目标文件格式,主要包含以下三种类型
1、可重定位文件:可与其它目标文件一起创建可执行文件和共享目标文件
2、可执行文件:可执行的一个程序,此文件规定了exec() 如何创建一个程序的进程映像。
3、共享目标文件:链接器可将它与其它可重定位文件和共享目标文件连接成其它的目标文件,动态连接器又可将它与可执行文件和其它共享目标文件结合起来创建一个进程映像。
ELF常用数据格式
所有数据结构都遵从“自然”大小和对齐规则。
目标文件格式
目标文件既要参与程序链接,又要参与程序执行,因此提供两种并行视图,分别反应不同活动需求。
ELF头部:描述整个文件组织。
程序头部:告诉系统如何创建进程映像。
节区头部:每个节区在表中都有一项,每一项给出节区名称、大小等信息。用于链接的目标文件必含节区头部表。
ELF Header
#define EI_NIDENT 16
typedef struct{
unsigned char e_ident[EI_NIDENT];//ElF标识信息,16个字节
Elf32_Half e_type;//目标文件类型,2个字节
Elf32_Half e_machine;//目标体系结构类型,2个字节
Elf32_Word e_version;//目标文件版本,4个字节
Elf32_Addr e_entry;//程序入口的虚拟地址,如果没有则为0,4个字节
Elf32_Off e_phoff;//程序头部表偏移,4个字节
Elf32_Off e_shoff;//节区头部表偏移,4个字节
Elf32_Word e_flags;//与文件相关,特定于处理器标志,4个字节
Elf32_Half e_ehsize;//elf头部大小,2个字节
Elf32_Half e_phentsize;//程序头部表格的表项大小,2个字节
Elf32_Half e_phnum;//程序头部表格表项数目,2个字节
Elf32_Half e_shentsize;//节区头部表格的表项大小,2个字节
Elf32_Half e_shnum;//节区头部表格的表项数目,2个字节
Elf32_Half e_shstrndx;//节区头部表格中与节区名称字符串表相关的表项索引,2个字节
}Elf32_Ehdr;
Program Header
typedef struct {
Elf32_Word p_type;//描述段的类型,4个字节
Elf32_Off p_offset;//段偏移,4个字节
Elf32_Addr p_vaddr;//段虚拟地址,4个字节
Elf32_Addr p_paddr;//物理地址,4个字节
Elf32_Word p_filesz;//段的文件映像大小,4个字节
Elf32_Word p_memsz;//段的内存映像大小,4个字节
Elf32_Word p_flags;//段相关标识,4个字节
Elf32_Word p_align;//对齐取值,4个字节
} Elf32_phdr;
Section Header
typedef struct{
Elf32_Word sh_name;//节区名称,是字符串表节区索引,4个字节
Elf32_Word sh_type;//节区类型,4个字节
Elf32_Word sh_flags;//节区标志,4个字节
Elf32_Addr sh_addr;//节区内存地址,4个字节
Elf32_Off sh_offset;//节区偏移,4个字节
Elf32_Word sh_size;//节区长度,4个字节
Elf32_Word sh_link;//节区头部表索引链接,4个字节
Elf32_Word sh_info;//附加信息,4个字节
Elf32_Word sh_addralign;//对齐约束,4个字节
Elf32_Word sh_entsize;//节区表项大小,4个字节
}Elf32_Shdr;
Symbol Table
typedef struct {
Elf32_Word st_name;//符号表项名称,是字符串表索引,4个字节
Elf32_Addr st_value;//符号值,4个字节
Elf32_Word st_size;//符号大小,4个字节
unsigned char st_info;//类型和绑定信息,1个字节
unsigned char st_other;//无定义,1个字节,当前值为0
Elf32_Half st_shndx;//节区头部索引,2个字节
} Elf32_sym;
节区
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/193384.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...