DPF格式,mdf是什么文件格式
在ELF文件研究计算机中,ELF文件主要是二进制、可执行文件和目标代码格式的文件
ELF文件主要由4部分构成,ELF header、Program header、Section、4个Section header table。
ELF文件头# define ei _ ni dent 16 typedef struct { unsigned chare _ ident [ ei _ ni dent ]; 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这3个字符。
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_offset; 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_offset表示段的第一个字节相对于文件头的偏移
p_vaddr物理地址
文件中p_filesz段的长度
内存中p_memsz段的长度
p_flags段相关标志
p_align根据此值确定段在文件和内存中的对齐方式
p_offset角色p_offset和文件头地址可以位于该段的头地址中
节标题节标题包含文件中每个节的条目,每个节的条目定义该节的类型、节的大小以及在二进制文件中的编译
typedef struct { El f32 _ wordsh _ name; Elf32_Word sh_type; Elf32_Word sh_flags; Elf32_Addr sh_addr; Elf32_Off sh_offset; 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_offset表示节中第一个字节相对于文件头的偏移
sh_size表示节的大小(单位字节)
sh_link表示节区头部表索引链接
sh_info表示节的其他信息
sh_addralign用于地址定位
sh_entsize表示符号表关联
sh_offset角色sh_offset和文件头地址可以位于该节的头地址中
资源表结构资源表用于存储将物理地址转换为虚拟地址的一组地址表
没有后续。 如果朋友对这篇文章有疑问,欢迎留言交流