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

ELF文件格式解析

参考资料 ELF文件格式解析 《Android软件安全权威指南》8.4-原生程序文件格式 Android平台感染ELF文件实现模块注入 elf文件类型六 Dynamic Section(动态section...) 简单粗暴的so加解密实现   上边的资料对ELF文件格式的分析非常详细,这边主要记录一下自己感觉比较重要和掌握的不是很清楚的部分,增加一些自己的理解,也方便后续查阅。...所以综上所述,整个SO文件的大小= e_shoff + e_shnum * sizeof(e_shentsize) + 1 有兴趣可以参考这篇文章来了解更多:ELF文件格式解析,下面很多部分都借鉴了这篇文章的内容...} Elf32_sym; 在010Editor里解析完成后这部分的内容就是dynamic_symbol_table了 其中的symname值就是在.dynstr的偏移了。...DT_SYMBOLIC 16 ignored ignored optional 在共享object库中出现的该元素为在库中的引用改变动态连接器符号解析的算法。

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

ELF文件格式修复

我们想要获取的.init_array,符号表,字符串表等,都可以通过Elf64_Dyn中的对应项目获取到,这里我就不展开说了,可以自行学习一下。 当然,我也提供一个小工具供大家解析畸形的ELF。...到目前为止,我发现对文件格式解析最强大的,当属010Editor(假如有比这个好的,请告知我一下,非常感谢)。...网上可以下载到解析ELF文件的Template,但这个Template对于畸形ELF不做深入解析,为此,我花了1天时间学习了010Editor的语法,发现它的模板真的是非常强大。...最终也完成了对ELF Template的增强。 直接看看效果: ? 新增对动态链接表的解析 ? 新增对动态字符串表的解析 ?...模板地址: https://github.com/difcareer/010templates/blob/master/ELFTemplate.new.bt 我并没有把所有的d_tag都解析完,看过动态链接过程就可以仿照着解析出来

2.3K61

ELF文件格式的详解

ELF文件格式的详解 1.说明 2.elf文件的基本格式 3.elf文件的头部信息 4.elf文件的节区(Section) 4.1 节区的作用 4.2 节区的组成 5.elf文件的段(Segment)...Binary Interface)接口的一部分,也是Linux的主要可执行文件格式。...本文主要从elf文件的组成构造的角度来进行分析,将elf文件的解析通过一步一步的分析得到里面的信息,同时通过python脚本解析,可以直观的看到文件的信息,通过本文的阅读,将对elf文件格式有着更加深刻的理解...具体的elf文件加载过程这篇文章不会多说,后面会写文章专门叙述。本文的目的是elf文件格式解析过程。...本文主要通过对elf文件的构造、具体的含义以及如何去分析elf文件的角度,全面的进行elf文件格式的剖析。在程序链接、程序加载执行上会有更多不一样的理解。

5.6K54

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

文章目录 一、ELF 文件简介 二、ELF 文件结构 一、ELF 文件简介 ---- ELF 文件是 Executable and Linkable Format ( 可执行 和 可链接 格式 ) 的文件...| 编译器指示字 ) 博客 ; ELF 文件 对应的 Linux 中的目标文件格式有 : 库文件 , 可执行文件 , 编译中间文件 ; 编译中间文件有 .a , .o , .s 文件 ; 库文件 ,..., 会遵循 ELF 文件格式的规范 ; ELF 文件格式最常见的形式就是 .so 动态库 ; ELF 文件的特点 : ELF 文件是以 7F 45 4C 46 开头 , 其中 7F 是一个二进制标志..., 45 4C 46 是 ELF 字符对应的 ASCII 码 ; 二、ELF 文件结构 ---- ELF 文件由以下四部分组成 : ELF 文件头 ELF 程序头 : ELF 程序头 会告知 节区头部表的位置...; 节区或段 节区头部表 : 节区头部表 会告知 ELF 文件中有多少个 节区 , 一般 节区头部表 一般都在 ELF 文件尾部 ;

1.1K30

【Android 逆向】ELF 文件格式总结 ★★★

文章目录 一、ELF 文件当前版本号 二、操作系统 ABI 信息 三、ABI 版本 四、文件头校验 五、文件头长度信息 六、ELF 文件类型 ( 动态库文件 ) 七、ELF 文件对应 CPU 架构 八、...ELF 目标文件版本 九、可执行程序起始地址 十、程序头偏移量 十一、节区头偏移量 十二、处理器特定标志 十三、ELF 文件头大小 十四、ELF 程序头入口大小 十五、ELF 程序头入口个数 十六、ELF...文件节区头入口大小 十七、ELF 文件节区头入口个数 十八、字符表序号 一、ELF 文件当前版本号 ---- ELF 文件头第 6 字节 : 版本信息 ; 二、操作系统 ABI 信息 ---- ELF...表示该 ELF 文件是动态库文件 ; 03 00 小端格式 , 低位在低地址 , 值为 3 ; 七、ELF 文件对应 CPU 架构 ---- ELF 文件头 第 18 ~ 19 字节 : ELF 文件对应的...00 小端格式 , 低位在低地址 , 值为 0 ; 当前解析ELF 文件是动态库文件 , 该值没有实际意义 , 设置 0 默认值 ; 动态库并不能独立执行 , 需要由外部加载执行 ; 十、程序头偏移量

47611

【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 格式 ; 这个值由编译器决定 ; 有些

86710

elf文件解析器_elf文件下载

前两天网上投递了简历,面试了一家C++公司,然后对面负责人给我发了一份笔试题,题目是: 请写出一个ELF文件解析器, 需要能打印出所有segments和sections,并列出每个section和segment...FILE *fp; fp = fopen(argv[1], "r"); if (NULL == fp) { printf("fail to open the file"); exit(0); } // 解析...= 'F') { printf("Not a ELF file\n"); exit(0); } // 解析section 分配内存 section * 数量 Elf64_Shdr *shdr = (Elf64...= ‘F’) { printf(“Not a ELF file\n”); exit(0); } // 解析section 分配内存 section * 数量 Elf64_Shdr *shdr = (...” ,里面定义了elf文件结构的各种数据结构,能够使解析elf的过程中更加方便: #ifndef _QEMU_ELF_H #define _QEMU_ELF_H #include <inttypes.h

1.5K20

Linux ELF笔记

ELF头部的结构体为 elf32_hdr 或 elf64_hdr, 在Android系统源代码的 /bionic/libc/kernel/uapi/linux/elf.h 可以找到。...EI_VERSION Offset: 6 Length: 1 Type: Number (unsigned char) 顾名思义,是 ELF 文件格式的版本号,默认是 EV_CURRENT(= 1)。...ET_EXEC 指的是可执行程序, 存在程序入口, 有 Program Header, 可以加载到内存中运行, 在 Linux 下的可执行程序都是这样的。 ET_DYN 特指动态链接库。...e_version Offset: 0x14 Length: 4 Type: unsigned int 顾名思义,是 ELF 文件格式的版本号,默认是 EV_CURRENT(= 1)。...作者的话 个人喜欢计算机技术,主要涉及的领域包括:Android系统,Linux内核,嵌入式软/硬件,机器人和智能硬件。同时也对其他的各个技术栈都感兴趣。

1.9K10

【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.3K10

【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

65820

【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 文件 字符表序号 ;

91220

Android逆向之旅—SO(ELF)文件格式详解–反编译so

第二、准备资料 我们需要了解elf文件的格式,关于elf文件格式详解,网上已经有很多介绍资料了。这里我也不做太多的解释了。不过有两个资料还是需要介绍一下的,因为网上的内容真的很多,很杂。...第三、工具 当然这里还需要介绍一个工具,因为这个工具在我们下面解析elf文件的时候,也非常有用,而且是检查我们解析elf文件的模板。...就是很出名的:readelf命令 不过Window下这个命令不能用,因为这个命令是Linux的,所以我们还得做个工作就是安装Cygwin。...还有很多命令用法,这里就不在细说了,网上有很多介绍的~~ 第四、实际操作解析Elf文件(Java代码&C++代码) 上面我们介绍了elf文件格式资料,elf文件的工具,那么下面我们就来实际操作一下,来用...,可以很深刻的了解elf文件的格式,所以我们在以后遇到一个文件格式的了解过程中,最好的方式就是手动的写一个工具类就好了。

25.3K1916

PE格式:实现ELF结构解析工具

ELF文件格式,是一个开放的可执行文件和链接文件格式,其主要工作在Linux系统上,是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件,ELF文件格式类似于PE格式,但比起PE结构来ELF...结构显得更加的简单,Linux文件结构相比于Windows结构来说简单一些.读取ELF头: 首先需要先来编译一个简单的ELF文件,然后将文件编译并连接....系统中有一个默认命令readelf -h可以解析指定文件的头结构....|linux系统中的节头文件保存在/usr/include/elf.h我通过查找找到了ELF64所对应的结构数据typedef uint16_t Elf64_Half; 16typedef uint32...Elf64_Word e_version; /* ELF文件格式的版本 */ Elf64_Addr e_entry; /* 入口点虚拟地址

46100
领券