ELF格式文件(非常详细)

更新时间:2023-06-29 19:42:22 阅读: 评论:0

孩子牙疼怎么办ELF格式⽂件(⾮常详细)
ELF⽂件研究
在计算机中,ELF⽂件是⼀种主要⽤于⼆进制,可执⾏⽂件,⽬标代码格式的⽂件,
ELF⽂件主要由四个部分组成 1.ELF头(ELF header),2.程序头表(Program header),3.节(Section),4节头表(Section header table)。
ELF⽂件头
#define EI_NIDENT 16
typedef struct{
  unsigned char e_ident[EI_NIDENT];
  Elf32_Half e_type;
  Elf32_Half e_machine;
  Elf32_Word e_version;
  Elf32_Addr e_entry;
  Elf32_Off e_phoff;
  Elf32_Off e_shoff;
  Elf32_Word e_flags;
  Elf32_Half e_ehsize;
  Elf32_Half e_phentsize;
  Elf32_Half e_phnum;
  Elf32_Half e_shentsize;
  Elf32_Half e_shnum;
  Elf32_Half e_shstrndx;
  }Elf32_Ehdr;
e_ident作为开头主要⽤装⼀些标⽰信息,固定值来判断ELF⽂件的合法性,其开头4个字节固定为0x7f, ELF三个字符。
e_type是⽤来标志⽂件类型的⽐如有1.可重定位⽂件,2.可执⾏⽂件,3.共享⽬标⽂件。
e_machine来⽤标志运⾏⽂件的机器类型,
e_version表⽰⽂件的版本
e_entry 程序的⼊⼝的虚拟地址,作为执⾏⽂件可以作为执⾏向量地址
e_phoff 表⽰程序表头相对于⽂件头的偏移量
e_shoff 表⽰节头表相对于⽂件头的编移量
作文青春e_flags 与⽂件相关的,特定处理器的标志
e_ehsize 表⽰ELF头部的⼤⼩(单位字节)
e_phentsize 表⽰每个程序头表条⽬⼤⼩(单位字节)
e_phnum  表⽰有多少个程序头条⽬
e_shentsize 表⽰每个节头表的条⽬⼤⼩
e_shnum 表⽰有多少个节头表条⽬
e_shstrndx 包含节名称的字符串,作为⼀个符号表
e_phoff 的作⽤
e_phoff加上⽂件的头地址就可以定位到程序头表的位置
句加鸟念什么
e_shoff的作⽤
e_shoff加上⽂件的头地址就可以定位到节头表的位置
程序头表(Program header)
程序头表⽤来描述⼀个段在⽂件的位置,⼤⼩以及它被放进内存后所在的位置和⼤⼩
typedef struct {
Elf32_Wordp    _type;
Elf32_Off      p_offt;
Elf32_Addr    p_vaddr;
Elf32_Addr    p_paddr;
Elf32_Word    p_filesz;
Elf32_Word    p_memsz;
Elf32_Word    p_flags;
Elf32_Word    p_align;
}Elf32_Phdr;
p_type 表⽰程序头描述的段类型
p_offt 表⽰段的第⼀字节相对⽂件头的偏移
p_vaddr 物理地址
仍旧的近义词
p_filesz  段在⽂件中的长度
p_memsz 段在内存中的长度
p_flags 与段相关的标志
p_align 根据此项值来确定段在⽂件及内存中如何对齐
p_offt 的作⽤
p_offt加⽂件头地址可以定位到该段的头地址
节头表
节表头包含⽂件中各个节的条⽬,每个节的条⽬定义了该节的类型,定义了节的⼤⼩,以及在⼆进制⽂件内部的编译
typedef struct{
Elf32_Word sh_name;
Elf32_Word sh_type;
Elf32_Word sh_flags;
Elf32_Addr sh_addr;
Elf32_Off sh_offt;
Elf32_Word sh_size;
Elf32_Word sh_link;
Elf32_Word sh_info;
Elf32_Word sh_addralign;
Elf32_Word sh_entsize;
}Elf32_Shdr;
清朝爵位等级排列
sh_name表⽰节区名称
描写小动物sh_type表⽰节区类型
sh_flags表⽰节的类型是否是可执⾏节,内容是否可以修改
sh_addr表⽰节区在第⼀个字节应处的位置
sh_offt表⽰节区第⼀个字节相对⽂件头的偏移
sh_size表⽰节区的⼤⼩(单位字节)
sh_link表⽰节区头部表索引链接
sh_info表⽰节区的附加信息
sh_addralign⽤于地址对齐
sh_entsize表⽰符号表相关
sh_offt的作⽤
sh_offt加⽂件头地址可以定位到该节区的头地址
为什么过年
资源表结构
唱双簧
资源表⽤于装将物理地址转换成虚拟地址的⼀系列地址表
未完待续,如果有朋友刷到这篇⽂章有疑问欢迎留⾔交流

本文发布于:2023-06-29 19:42:22,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1068637.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   节区   定位   头表   地址   作为
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图