首页 > 编程知识 正文

安卓so文件怎么打开,so后缀的文件

时间:2023-05-06 12:56:32 阅读:46954 作者:4942

可执行链接格式(Executable and Linking Format )最初由UNIX系统实验室(UNIX系统实验室,USL )开发,用于APP应用程序二进制接口(application interface )

1、可重定位文件:可以与其他目标文件一起创建可执行文件和共享目标文件

2、可执行文件: exec ) )规定如何创建程序进程映像的可执行程序。

3、共享目标文件:链接器可以将其连接到其他可重定位文件、共享目标文件和其他目标文件,动态连接器可以将其与可执行文件和其他共享目标文件结合创建进程映像

ELF的一般数据格式

所有数据结构都遵循“自然”大小和对齐规则。

目标文件格式

由于目标文件既参与到方案的链接中,又参与到方案的运行中,因此提供了两个并行视图来满足不同活动的需要。

ELF头部:描述整个文件组织。

程序标头:告诉系统如何创建流程映像。

节标题:每个节在表中有一个项目,每个项目提供节名称、大小等信息。 用于链接的目标文件需要节标头表。

elf header # define ei _ ni dent 16类型def struct { unsigned chare _ ident [ ei _ ni dent ]; //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; programheadertypedefstruct { El f32 _ wordp _ 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; sectionheadertypedefstruct { El f32 _ wordsh _ 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; symboltabletypedefstruct { El f32 _ wordst _ name; //符号表条目名称是字符串表索引,4字节Elf32_Addr st_value; //代码值,4字节Elf32_Word st_size; //符号大小,4字节unsigned char st_info; //类型和绑定信息,1字节未指定char ST _ other; //无定义,1字节,当前值为0Elf32_Half st_shndx; //节区头部索引,2字节} Elf32_sym;

部分包含目标文件中的所有信息。 ELF头、程序头表、分项头表除外。 节区满足以下条件。 1、每个节区都有对应的节区头部描述,但有节区头部却不一定有节区。 2、每个部分占用连续的字节区域,可能为0(3),目标文件可能包含非活动区域,这些区域不属于任何标头和部分,其内容未指定。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。