首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Android 逆向】ELF 文件格式 ( ELF 文件简介 | ELF 文件结构 )

文章目录 一、ELF 文件简介 二、ELF 文件结构 一、ELF 文件简介 ---- ELF 文件是 Executable and Linkable Format ( 可执行 和 可链接 格式 ) 的文件...可执行文件 , 编译中间文件 , 都是 ELF 格式的文件 ; 在 Android 应用运行时 , ELF 文件的大部分内容 , 会被 映射到内存中 ; 这就意味着 Android 应用内存中的很多数据..., 会遵循 ELF 文件格式的规范 ; ELF 文件格式最常见的形式就是 .so 动态库 ; ELF 文件的特点 : ELF 文件是以 7F 45 4C 46 开头 , 其中 7F 是一个二进制标志..., 45 4C 46 是 ELF 字符对应的 ASCII 码 ; 二、ELF 文件结构 ---- ELF 文件由以下四部分组成 : ELF 文件ELF 程序头 : ELF 程序头 会告知 节区头部表的位置...; 节区或段 节区头部表 : 节区头部表 会告知 ELF 文件中有多少个 节区 , 一般 节区头部表 一般都在 ELF 文件尾部 ;

1.2K30

【Android 逆向】ELF 文件格式 ( ELF 文件头 | ELF 文件头标志 | ELF 文件位数 | ELF 文件大小端格式 )

文章目录 一、ELF 文件简介 二、ELF 文件头 三、ELF 文件头标志 四、ELF 文件位数 五、ELF 文件大小端格式 一、ELF 文件简介 ---- 在上一篇博客 【Android 逆向】ELF...文件格式 ( 安装 010 Editor 二进制查看工具的 ELF.bt 插件模板 | 安装 ELF.bt 模板 | 打开 ELF 文件 ) 中 , 准备 ELF 文件解析环境 , 在 010 Editor...中安装了 ELF.bt 模板 ; 二、ELF 文件头 ---- ELF 文件头区域如下 : 前 16 字节是 ELF 的标志 , 三、ELF 文件头标志 ---- 0 ~ 3 字节 : 是 0x7F...和 ELF 的 ASCII 码 ; 这是 ELF 文件的特征 ; 四、ELF 文件位数 ---- 4 字节 : 表示该 ELF 文件的位数 32 位还是 64 位 ; 值为 01 , 表示该 ELF...文件是 32 位 文件 ; 五、ELF 文件大小端格式 ---- 5 字节 : 表示 有效位 格式 , 取值 LSB / MSB ; 此处值为 1 , LSB 格式 ; 这个值由编译器决定 ; 有些

93010
您找到你想要的搜索结果了吗?
是的
没有找到

elf文件解析器_elf文件下载

前两天网上投递了简历,面试了一家C++公司,然后对面负责人给我发了一份笔试题,题目是: 请写出一个ELF文件解析器, 需要能打印出所有segments和sections,并列出每个section和segment...源码如下(”elf.h” 头文件见后文),它会报warning,但是貌似不太影响最后结果: #include #include #include "elf.h" int...(0 == a) { printf("fail to read head\n"); exit(0); } // 判断elf文件类型 if(elf_head.e_ident[0] !...(0 == a) { printf(“fail to read head\n”); exit(0); } // 判断elf文件类型 if(elf_head.e_ident[0] !...“elf.h” ,里面定义了elf文件结构的各种数据结构,能够使解析elf的过程中更加方便: #ifndef _QEMU_ELF_H #define _QEMU_ELF_H #include <inttypes.h

1.5K20

ELF文件程序表头和代码实现ELF文件加载

前面章节我们了解了ELF文件的头部结构,这次我们深入了解另一个非常重要的数据结构,那就是程序表头。操作系统严重依赖该结构来加载ELF文件或是实现动态链接。...程序表头反映的是当ELF加载到内存后所形成的“视图”或结构,也就是说ELF文件存在硬盘上或者被加载到内存,它展现出来的形态不一致。...最后p_align表示内存对齐方式,它的取值为2的指数,同时p_vaddr必须等于(p_offset % p_align) 了解了ELF二进制内部原理后,我们需要实现手动加载ELF文件,实现这个目标,我们需要依赖一个库叫...Binary类用于对整个elf文件的抽象,通过它可以访问ELF文件相关信息,Section是对前面章节描述的段对象的抽象,Symbol是对前面章节符号表对象的抽象。...load_binary是来自libbfd库提供的函数,它将elf文件加载到内存中。

1.6K30

ELF文件格式

文章目录 源码到可执行文件 ELF文件格式 ELF File header Program header Section header 工具 Symbol Table 源码到可执行文件 linux中四类文件使用...例如这些扩展名的文件一般都是elf格式:.axf, .bin, .elf, .o, .prx, .puff, .ko, .so, and .mod ELF文件格式 引用wiki的一张图: https...://en.wikipedia.org/wiki/Executable_and_Linkable_Format ELF header在文件开始处描述了整个文件的组织 Section提供了目标文件的各项信息...Section包含目标文件除了ELF文件头、程序头表、section头表的所有信息,而且目标文件section满足几个条件: 目标文件中的每个section都只有一个section头项描述,可以存在不指示任何...符号表入口结构定义如下,可在/usr/include/elf.h中可以找到文件头结构定义: typedef struct elf64_sym { Elf64_Word st_name; /* Symbol

1.6K30

ELF文件结构描述

ELF目标文件格式最前部ELF文件头(ELF Header),它包含了描述了整个文件的基本属性,比如ELF文件版本、目标机器型号、程序入口地址等。...从上面输出的结构可以看到:ELF文件头定义了ELF魔数、文件机器字节长度、数据存储方式、版本、运行平台等。...ELF文件头结构及相关常数被定义在“/usr/include/elf.h”,因为ELF文件在各种平台下都通用,ELF文件有32位版本和64位版本的ELF文件文件头内容是一样的,只不过有些成员的大小不一样...段表 段表就是保存ELF文件中各种各样段的基本属性的结构。段表是ELF除了文件以外的最重要结构体,它描述了ELF的各个段的信息,ELF文件的段结构就是由段表决定的。...ELF符号表结构 ELF文件中的符号表往往是文件中的一个段,段名一般叫做“.symtab”。

1.5K50

【Android 逆向】ELF 文件格式 ( ELF 文件类型 | ELF 文件对应 CPU 架构 | ELF 目标文件版本 | 可执行程序起始地址 )

文章目录 一、ELF 文件类型 ( 动态库文件 ) 二、ELF 文件对应 CPU 架构 三、ELF 目标文件版本 四、可执行程序起始地址 一、ELF 文件类型 ( 动态库文件 ) ---- ELF 文件头...第 16 ~ 17 字节 : ELF 文件类型 , 动态库文件 / 可执行文件 / 静态库文件 / 链接文件 ; 03 00 表示该 ELF 文件是动态库文件 ; 03 00 小端格式 , 低位在低地址..., 值为 3 ; 二、ELF 文件对应 CPU 架构 ---- ELF 文件头 第 18 ~ 19 字节 : ELF 文件对应的 CPU 架构体系 , x86 / arm / mips ; 03 00...表示该 ELF 文件对应的 CPU 架构师 x86 架构 ; 03 00 小端格式 , 低位在低地址 , 值为 3 ; 三、ELF 目标文件版本 ---- ELF 文件头 第 20 ~ 23 字节...是可执行文件 , 应该从哪个地址开始执行代码 ; 该值在可执行 ELF 文件中才有意义 , 动态库文件没有意义 ; 00 00 00 00 小端格式 , 低位在低地址 , 值为 0 ; 当前解析的 ELF

67820

ELF文件-逆向工具

ELF文件-逆向工具 转载一篇逆向工具的文章: 原文 1、ELF文件内容解析 readelf: 可解析ELF文件的所有内容; strings: 查看ELF文件中的字符串; file : 查看ELF...文件的信息; nm : 查看ELF文件中的符号信息; ldd : 查看ELF文件所依赖的库文件; 2、objdump 用于对ELF文件进行反汇编; objdump -d ;反汇编部分可执行的二进制代码...; xxd -s -10 ;以ELF文件尾处的第1个字节为参照,从第10个字节处开始显示; 6、编辑ELF文件使用vi/vim与命令xxd配合完成;STEP1:使用vi/vim以二进制模式打开ELF文件...xxd -r STEP5:在vi/vim的命令模式下输入以下内容,保存二进制格式的ELF文件:wq —备注— % :表示当前文件中显示的所有行; !...xxd"表示把当前文件中的所有行传递给外部命令xxd; 7、动态调试工具 ltrace: 跟踪ELF文件或进程对库函数的调用(library_function_call); strace: 跟踪ELF

84320

【Android 逆向】ELF 文件格式 ( ELF 程序头入口大小 | ELF 程序头入口个数 | ELF 文件节区头入口大小 | ELF 文件节区头入口个数 | 字符表序号 )

文章目录 一、ELF 程序头入口大小 二、ELF 程序头入口个数 三、ELF 文件节区头入口大小 四、ELF 文件节区头入口个数 五、字符表序号 一、ELF 程序头入口大小 ---- ELF 文件头 第...32 字节 ; 二、ELF 程序头入口个数 ---- ELF 文件头 第 44 ~ 45 字节 : ELF 程序头入口个数 ; 这里是 7 个 ; 07 00 小端格式 , 低位在低地址 , 值为...7 ; 如下图所示 , 程序头是由 7 个入口组成 , 每个入口大小是 32 字节 ; 三、ELF 文件节区头入口大小 ---- ELF 文件头 第 46 ~ 47 字节 : ELF 文件节区头入口大小字节数...文件节区头入口个数 ---- ELF 文件头 第 48 ~ 49 字节 : ELF 文件节区头入口个数 ; 这里是 21 个 ; 15 00 小端格式 , 低位在低地址 , 值为 21 ; 下图选中的部分..., 就是一个节区头入口的大小 , 有 21 个节区头入口 , 每个节区头入口大小 40 字节 ; 五、字符表序号 ---- ELF 文件头 第 50 ~ 51 字节 : ELF 文件 字符表序号 ;

94620

【Android 逆向】ELF 文件格式 ( 安装 010 Editor 二进制查看工具的 ELF.bt 插件模板 | 安装 ELF.bt 模板 | 打开 ELF 文件 )

文章目录 一、搜索并下载 ELF.bt 模板 二、安装 ELF.bt 模板 三、打开 ELF 文件 一、搜索并下载 ELF.bt 模板 ---- 进入 010 Editor 工具的插件模板下载页面 http.../010editor/repository/files/ELF.bt ; 可以在浏览器下载中 , 新建下载项 , 下载该 ELF.bt 文件 ; EXE.bt : 文件地址 https://www.sweetscape.com.../010editor/repository/files/DEX.bt 可以在浏览器下载中 , 新建下载项 , 下载该 ELF.bt 文件 ; 二、安装 ELF.bt 模板 ---- 选择 " 菜单栏.../ 模板 / 编辑模板列表 " 选项 , 在弹出的对话框中 , 新建一个模板 , 并指定模板对应文件 ; 三、打开 ELF 文件 ---- 选择打开 ELF 文件 : 打开文件后 , 选择 "...菜单栏 / 模板 / ELF 模板 " 选项 , 此时就可以在 模板结果 面板 , 看到 ELF 文件的四个组成部分 ;

1.6K10

扒一扒ELF文件

ELF文件类型 2.1 可重定位目标文件(.o文件) 2.2 可执行目标文件(a.out文件) 2.3 共享对象文件(.so文件) 3. ELF文件作用 4....ELF文件格式 4.1 从编译和链接角度看ELF文件(可重定位目标文件) 4.2 从程序执行角度看ELF文件(可执行文件) 5.总结 1....ELF文件作用   ELF文件参与程序的连接(建立一个程序)和程序的执行(运行一个程序),所以可以从不同的角度来看待ELF格式的文件:   1.如果用于编译和链接(可重定位文件),则编译器和链接器将把...ELF文件格式 4.1 从编译和链接角度看ELF文件(可重定位目标文件) ?...从编译和链接角度看ELF文件 ELF头   每个ELF文件都必须存在一个ELF_He ader,这里存放了很多重要的信息用来描述整个文件的组织,如: 版本信息,入口信息,偏移信息等。

68620

ELF文件格式解析

参考资料 ELF文件格式解析 《Android软件安全权威指南》8.4-原生程序文件格式 Android平台感染ELF文件实现模块注入 elf文件类型六 Dynamic Section(动态section...ELF文件整体组成   在《Android软件安全权威指南》中提到一个ELF文件可以按内容划分为三部分,将Sections归到了Program Header Table和Section Header Table...:程序节区,ELF文件的主要内容存放与此 Section Header Table:节区头表,包含多个Section Header   如图展示了ELF文件四个部分的空间上的组成,同时展示了ELF的两个视图...ELF加载   经过测试,ELF文件被加载时会每个LOAD段的记录将文件进行加载,具体来说,就是将ELF文件从LOAD段的p_offset位置读取p_filesz大小的数据,映射到内存中ELF基址+p_vaddr...Header和Program Header给占据了他们的大小是0x40+0x1C0=0x200   此外,值得注意的是ELF加载时并没有读取所有ELF文件中的内容去加载到内存中,实际上我这个ELF文件还有个

2.4K40

ELF文件格式修复

在IDA动态调试-没啥卵用的静态加固中,我构造了一个畸形的ELF文件,虽然能够糊弄一下IDA的静态分析,但是动态分析无效。...新的疑问随之而来:如前面所述,我在构造畸形ELF文件的时候,直接把section头部表给删除了,还修改了ELF头部和section相关的字段,为啥不会影响执行呢?...到目前为止,我发现对文件格式解析最强大的,当属010Editor(假如有比这个好的,请告知我一下,非常感谢)。...网上可以下载到解析ELF文件的Template,但这个Template对于畸形ELF不做深入解析,为此,我花了1天时间学习了010Editor的语法,发现它的模板真的是非常强大。...写到这里,才发现标题写的是ELF文件的修复,我也不是真的要去修复被删除的节区头部表,我觉得要修复这个应该是有难度的,主要是信息会有缺失。

2.3K61

ELF文件格式的详解

ELF文件格式的详解 1.说明 2.elf文件的基本格式 3.elf文件的头部信息 4.elf文件的节区(Section) 4.1 节区的作用 4.2 节区的组成 5.elf文件的段(Segment)...本文主要从elf文件的组成构造的角度来进行分析,将elf文件的解析通过一步一步的分析得到里面的信息,同时通过python脚本解析,可以直观的看到文件的信息,通过本文的阅读,将对elf文件格式有着更加深刻的理解...2.elf文件的基本格式 elf文件是有一定的格式的,从文件的格式上来说,分为汇编器的链接视角与程序的执行视角两种去分析ELF文件。 ?...为了彻底的弄清楚elf文件的内容,可以先从ELF文件的头部开始分析。 3.elf文件的头部信息 对于elf头部文件信息,首先可以可以查看一下内存的布局情况: ?...这样就完成了一个elf文件的解析过程。 7.总结 ELF文件经常的见到,但是要具体的分析ELF文件中所对应的具体的含义却需要费一番功夫。

5.9K54

ELF文件及android hook原理

ELF文件装载链接过程及hook原理 ELF文件格式解析 可执行和可链接格式(Executable and Linkable Format,缩写为ELF),常被称为ELF格式,在计算机科学中,是一种用于执行档...ELF文件主要有四种类型: 可重定位文件(Relocatable File) 包含适合于与其他目标文件链接来创建可执行文件或者共享目标文件的代码和数据。...链接视图和执行视图 ELF文件在磁盘中和被加载到内存中并不是完全一样的,ELF文件提供了两种视图来反映这两种情况:链接视图和执行视图。...因为ELF目标文件不需要被装载,所以它没有程序头表,而ELF的可执行文件和共享库文件都有。 使用readelf查看程序头表。 ?....dynamic段里保存的信息有点像ELF文件头。 .dynamic段的结构是由Elf32_Dyn组成的数组。

3.7K81

Linux无文件渗透执行ELF

这就是可以被攻击者所利用的,如果有办法将需要执行elf通过memfd_create(2)写入内存中进行执行的话就可以达到我们的目的。 ?...memfd_create()调用时需要传入两个参数,一个是文件名,一个是MFD_CLOEXEC标志(类似于O_CLOEXEC),以便当我们执行ELF二进制文件时,我们得到的文件描述符将被自动关闭。...ELF文件内容 ?...这里还有一个问题,如何将elf二进制文件写入到创建的文件当中,@MagisterQuis这里使用open函数将$FH内容添加进创建的匿名文件$fd当中,而$FH通过perl转化自要执行的elf文件,这就是该脚本的第二部分...可以看到我们的elf文件最终以匿名文件的方式在内存中被加载执行了,从匿名文件运行的程序与运行于普通文件的程序之间唯一真正的区别是/proc/pid/exe符号链接。

5.5K80
领券