ELF文件研究

xiaoxiao2021-02-27  112

// Create Time: 201606131327 Update Time: 201707101047 //

//elf文件头 typedef struct{   unsigned char e_ident[16]; 0x7f 'E' 'L' 'F'...   Elf32_Half e_type; //标识文件类型   Elf32_Half e_machine; //表明运行改程序需要的体系结构   Elf32_Word e_version; //标识文件的版本   Elf32_Addr e_entry; //程序的入口地址   Elf32_Off e_phoff; //Program Header table在文件中的偏移字节数   Elf32_Off e_shoff; //Section Header table在文件中的偏移字节数   Elf32_Word e_flags; //对IA32而言,此项为0   Elf32_Half e_ehsize; //Elf Header大小   Elf32_Half e_phentsize; //表示Program Header table每个条目的大小   Elf32_Half e_phnum; //表示Program Header table中有多少个条目   Elf32_Half e_shentsize; //表示Section Header table每个条目的大小   Elf32_Half e_shnum; //表示Section Header table中有多少个条目   Elf32_Half e_shstrndx; //包含节名称的字符串是第几个节 }Elf32_Ehdr; //segment header typedef struct { Elf32_Word p_type; //当前Program header所描述的段的类型 Elf32_Off p_offset; //p_offset 段的第一个字节在文件中的偏移 Elf32_Addr p_vaddr; //p_vaddr 段的一个字节在内存中的虚拟地址 Elf32_Addr p_paddr; //p_paddr 在物理内存定位相关的系统中,此项是为物理地址保留。 Elf32_Word p_filesz; //段在文件中的长度 Elf32_Word p_memsz; //段在内存中的长度 Elf32_Word p_flags; //与段相关的标志 Elf32_Word p_align; //根据此项值来确定段在文件及内存中如何对齐 }Elf32_Phdr; //section header typedef struct { Elf32_Word sh_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;
转载请注明原文地址: https://www.6miu.com/read-15815.html

最新回复(0)