Executable and Linkable Format (ELF) Linux: man elf https://refspecs.linuxfoundation.org/elf/elf.pdf...(第一手资料) https://manpages.debian.org/stretch/manpages/elf.5.en.html ?
英文文档: http://www.cs.cmu.edu/afs/cs/academic/class/15213-f00/docs/elf.pdf 中文对照翻译文档: http://blog.chinaunix.net.../attachment/attach/26/40/46/9726404697228d82cda2af11366fa7722d3a4f1a58.pdf 使用010editor打开ELF文件,套用ELF模板
近期研究了一下elf文件格式,发现好多资料写的都比較繁琐,可能会严重打击学习者的热情,我把自己研究的结果和大家分享,希望我的描写叙述可以简洁一些。...一、基础知识 elf是一种文件格式,用于存储Linux程序. 它内部都有一些什么信息呢?...所以说想明确elf格式,我们应该了解一下计算机运行程序须要那些信息。所以这一节,我们补充一些计算机系统的基础知识。...进程和虚拟内存: Linux系统给每一个进程分配了4GB的空间,当中 0xC0000000到0xFFFFFFFF 这个地址段是留给系统使用的,主要用于系统(linux 内核)和进程通信和交换数据...进程的创建和执行进程的创建和执行: 大致经历了下面步骤 1.用户请求执行程序时,操作系统会读取存储在磁盘上的可执行文件,在linux系统上这个文件就是我们的elf格式文件,为用户分配
文章目录 源码到可执行文件 ELF文件格式 ELF File header Program header Section header 工具 Symbol Table 源码到可执行文件 linux中四类文件使用...ELF文件格式 normal executable files relocatable object files core files shared objects....https://man7.org/linux/man-pages/man5/elf.5.html 1999年86open项目选择ELF作为x86处理器上Unix和类Unix系统的标准二进制文件格式。...使用ELF的原因包括:灵活性、可扩展性、对不同字节序格式支持、跨平台支持地址size。...例如这些扩展名的文件一般都是elf格式:.axf, .bin, .elf, .o, .prx, .puff, .ko, .so, and .mod ELF文件格式 引用wiki的一张图: https
本篇介绍 本篇详细介绍下ELF 64的文件格式。..., 包含代码和数据,是可以执行运行的程序,代码和数据都有固定的地址 ELF文件内容 一个ELF文件需要包含以下部分: elf文件头,必须出现在elf文件的开头 节头表(Section header table...64的数据类型定义如下: image.png ELF文件头格式 文件头格式如下: image.png 可以找一个so,用 readelf -h 看看输出,结果可以完全对上: image.png...ELF节 节包含了ELF文件中除了文件头,程序段头表,节头表之外的所有内容。...文件有2种重定位格式,"Rel"和"Rela", 前者较短,记录相对于符号原始值的偏移,后者是记录相对于特定字段的偏移。
文章目录 一、ELF 文件简介 二、ELF 文件头 三、ELF 文件头标志 四、ELF 文件位数 五、ELF 文件大小端格式 一、ELF 文件简介 ---- 在上一篇博客 【Android 逆向】ELF...文件格式 ( 安装 010 Editor 二进制查看工具的 ELF.bt 插件模板 | 安装 ELF.bt 模板 | 打开 ELF 文件 ) 中 , 准备 ELF 文件解析环境 , 在 010 Editor...文件是 32 位 文件 ; 五、ELF 文件大小端格式 ---- 5 字节 : 表示 有效位 格式 , 取值 LSB / MSB ; 此处值为 1 , LSB 格式 ; 这个值由编译器决定 ; 有些...CPU 加载 LSB 值快 , 有些 CPU 加载 MSB 值快 ; 大部分 程序 使用 LSB 格式 ; LSB 表示最低有效位 ( 小端格式 ) , MSB 表示最高有效位 ( 大端格式 ) ;...注意与 大端格式 / 小端格式 区分 , 概念不同 ; LSB 最低有效位 , 某种程度上等效于 小端格式 ;
文章目录 一、ELF 文件简介 二、ELF 文件结构 一、ELF 文件简介 ---- ELF 文件是 Executable and Linkable Format ( 可执行 和 可链接 格式 ) 的文件...; 链接 一般是在编译阶段 , 执行 一般是在运行阶段 ; 在这两个阶段都会用到 ELF 格式的文件 ; 参考 【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译...| 编译器指示字 ) 博客 ; ELF 文件 对应的 Linux 中的目标文件格式有 : 库文件 , 可执行文件 , 编译中间文件 ; 编译中间文件有 .a , .o , .s 文件 ; 库文件 ,...可执行文件 , 编译中间文件 , 都是 ELF 格式的文件 ; 在 Android 应用运行时 , ELF 文件的大部分内容 , 会被 映射到内存中 ; 这就意味着 Android 应用内存中的很多数据..., 会遵循 ELF 文件格式的规范 ; ELF 文件格式最常见的形式就是 .so 动态库 ; ELF 文件的特点 : ELF 文件是以 7F 45 4C 46 开头 , 其中 7F 是一个二进制标志
简单了解下ELF文件的格式。...1 简介 可执行与可链接格式 (Executable and Linkable Format,ELF),常被称为 ELF格式,是一种用于可执行文件、目标代码、共享库和核心转储(core dump)的标准文件格式...,一般用于类Unix系统,比如Linux,Macox等。...比如linux下的.so文件。 2 ELF文件格式 在编译过程中ELF文件格式在链接和程序的运行阶段的格式不同。...2.1 ELF Header ELF文件头描述了ELF文件的基本类型,地址偏移等信息,分为32bit和64bit两个版本,定义于linux源码的/usr/include/elf.h文件中。
参考资料 ELF文件格式解析 《Android软件安全权威指南》8.4-原生程序文件格式 Android平台感染ELF文件实现模块注入 elf文件类型六 Dynamic Section(动态section...) 简单粗暴的so加解密实现 上边的资料对ELF文件格式的分析非常详细,这边主要记录一下自己感觉比较重要和掌握的不是很清楚的部分,增加一些自己的理解,也方便后续查阅。...所以综上所述,整个SO文件的大小= e_shoff + e_shnum * sizeof(e_shentsize) + 1 有兴趣可以参考这篇文章来了解更多:ELF文件格式解析,下面很多部分都借鉴了这篇文章的内容...SHT_PROGBITS 1 此节区包含程序定义的信息,其格式和含义都由程序来解释。 SHT_SYMTAB 2 此节区包含一个符号表。...而访问这个表的则是另一个节区.dynsym .dynsym dynsym内容如下 乍一看也是莫名其妙不知所云,其实.dynsym也是像Section Header Table一样有自己的组成格式 typedef
新的疑问随之而来:如前面所述,我在构造畸形ELF文件的时候,直接把section头部表给删除了,还修改了ELF头部和section相关的字段,为啥不会影响执行呢?...d_un; } Elf32_Dyn; typedef struct { Elf64_Xword d_tag; union { Elf64...Elf32_Dyn数组 Elf32_Dyn中的d_tag非常重要,它标示了各种数据类型,其后的d_un也是根据d_tag进行解释的。...到目前为止,我发现对文件格式解析最强大的,当属010Editor(假如有比这个好的,请告知我一下,非常感谢)。...网上可以下载到解析ELF文件的Template,但这个Template对于畸形ELF不做深入解析,为此,我花了1天时间学习了010Editor的语法,发现它的模板真的是非常强大。
ELF文件结构 ELF格式的文件中的“数据”实际上是以“段”(节,英文:Section)的形式存储的。...ELF头部的结构体为 elf32_hdr 或 elf64_hdr, 在Android系统源代码的 /bionic/libc/kernel/uapi/linux/elf.h 可以找到。..._Ehdr; 接下来,分别解释这些变量的含义: #e_ident ELF格式文件的识别区域,固定为 16Bytes 的字符串。...EI_VERSION Offset: 6 Length: 1 Type: Number (unsigned char) 顾名思义,是 ELF 文件格式的版本号,默认是 EV_CURRENT(= 1)。...e_version Offset: 0x14 Length: 4 Type: unsigned int 顾名思义,是 ELF 文件格式的版本号,默认是 EV_CURRENT(= 1)。
ELF文件格式的详解 1.说明 2.elf文件的基本格式 3.elf文件的头部信息 4.elf文件的节区(Section) 4.1 节区的作用 4.2 节区的组成 5.elf文件的段(Segment)...Binary Interface)接口的一部分,也是Linux的主要可执行文件格式。...2.elf文件的基本格式 elf文件是有一定的格式的,从文件的格式上来说,分为汇编器的链接视角与程序的执行视角两种去分析ELF文件。 ?...根据定义,elf32的结构体定义,在Linux上可以在/usr/include/elf.h中找到 #define EI_NIDENT (16) typedef struct { unsigned...,可以查看 http://www.skyfree.org/linux/references/ELF_Format.pdf 这里有一张图值得研究一下: ?
ELF文件格式,是一个开放的可执行文件和链接文件格式,其主要工作在Linux系统上,是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件,ELF文件格式类似于PE格式,但比起PE结构来ELF...结构显得更加的简单,Linux文件结构相比于Windows结构来说简单一些.读取ELF头: 首先需要先来编译一个简单的ELF文件,然后将文件编译并连接....lyshark");return 0;}[root@localhost ~]# gcc -c lyshark.c [root@localhost ~]# gcc -o lyshark lyshark.o Linux...|linux系统中的节头文件保存在/usr/include/elf.h我通过查找找到了ELF64所对应的结构数据typedef uint16_t Elf64_Half; 16typedef uint32...Elf64_Word e_version; /* ELF文件格式的版本 */ Elf64_Addr e_entry; /* 入口点虚拟地址
表示该 ELF 文件是动态库文件 ; 03 00 小端格式 , 低位在低地址 , 值为 3 ; 七、ELF 文件对应 CPU 架构 ---- ELF 文件头 第 18 ~ 19 字节 : ELF 文件对应的...CPU 架构体系 , x86 / arm / mips ; 03 00 表示该 ELF 文件对应的 CPU 架构师 x86 架构 ; 03 00 小端格式 , 低位在低地址 , 值为 3 ; 八、ELF...---- ELF 文件头 第 28 ~ 31 字节 : 程序头偏移量 ; 程序头的位置 , 从整个 ELF 文件的第 0 字节开始计数 ; 34 00 00 00 小端格式 , 低位在低地址 , 值为...低位在低地址 , 值为 0 ; 十三、ELF 文件头大小 ---- ELF 文件头 第 40 ~ 41 字节 : ELF 文件头大小 ; 一般是 52 字节 ; 34 00 小端格式 , 低位在低地址..., 值为 52 ; 十四、ELF 程序头入口大小 ---- ELF 文件头 第 42 ~ 43 字节 : ELF 程序头入口大小 ; 一般是 32 字节 ; 20 00 小端格式 , 低位在低地址
ELF 简介 ELF(Executable and Linkable Format)是一种可执行文件和可链接文件的标准格式,用于在Linux和Unix系统中存储程序和库文件。...它是一种二进制文件格式,包含程序的代码、数据、符号表、段表等信息。 ELF格式的文件由多个段(section)组成,每个段包含不同类型的信息,如代码段、数据段、符号表段等。...ELF格式的文件具有较好的可移植性和灵活性,可以在不同的操作系统和硬件平台上运行。它也支持动态链接和共享库,使得程序可以在运行时动态加载和链接库文件,提高了程序的灵活性和效率。...2 nm nm主要用于查看elf中的符号。 3 strip 用于删除elf文件中的符号信息和调试信息,用来减小elf文件的大小。 4 strings 用于查看elf文件中的字符串信息。...5 readelf 查看elf文件信息,功能强大。 6 objdump 另一个查看elf文件的工具。
ELF文件格式,是一个开放的可执行文件和链接文件格式,其主要工作在Linux系统上,是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件,ELF文件格式类似于PE格式,但比起PE结构来ELF...结构显得更加的简单,Linux文件结构相比于Windows结构来说简单一些....); return 0; } [root@localhost ~]# gcc -c lyshark.c [root@localhost ~]# gcc -o lyshark lyshark.o Linux...|@.......@.......| 00000030 00 00 00 00 40 00 38 00 09 00 40 00 1f 00 1e 00 |....@.8...@.....| linux...Elf64_Word e_version; /* ELF文件格式的版本 */ Elf64_Addr e_entry; /*
在linux环境下,链接和加载的机制最终有一个载体来承担,这个载体就是elf文件。所以从研究elf文件格式入手,是理解链接和加载原理的好方法。...elf文件 相关背景 Elf文件格式,是现有linux环境下最流行的可执行文件格式,在elf文件存储的信息之上,实现了相应的链接和加载特性。...Linux环境下可执行文件格式的发展历史是:a.out -> coff -> xcoff -> elf。...elf文件格式 Linux环境下,三种类型的执行文件都可以使用elf格式来表示:可重定位文件(即编译生成但是未连接的文件)、动态库文件、可执行文件。...d.objcopy 转换elf文件为bin或者其他格式的文件,编译内核的时候会使用到。 e.strip 去掉elf文件中符号表和调试信息,对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 文件的四个组成部分 ;
readelf 用于显示elf格式文件的信息 补充说明 readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。...可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。...ELF文件作用 ELF文件参与程序的连接(建立一个程序)和程序的执行(运行一个程序),所以可以从不同的角度来看待elf格式的文件: 如果用于编译和链接(可重定位文件),则编译器和链接器将把elf文件看作是节头表描述的节的集合...实例 先给出如下例子: 对于可执行文件形式的elf格式文件: 查看可执行程序的源代码如下: root@localhost [test]$ cat main.cpp #include <iostream...对于库文件形式的elf格式文件: 查看库的源代码如下: // myfile.h #ifndef __MYFILE_H #define __MYFILE_H void printInfo(); #
文章目录 一、ELF 文件类型 ( 动态库文件 ) 二、ELF 文件对应 CPU 架构 三、ELF 目标文件版本 四、可执行程序起始地址 一、ELF 文件类型 ( 动态库文件 ) ---- ELF 文件头...第 16 ~ 17 字节 : ELF 文件类型 , 动态库文件 / 可执行文件 / 静态库文件 / 链接文件 ; 03 00 表示该 ELF 文件是动态库文件 ; 03 00 小端格式 , 低位在低地址...表示该 ELF 文件对应的 CPU 架构师 x86 架构 ; 03 00 小端格式 , 低位在低地址 , 值为 3 ; 三、ELF 目标文件版本 ---- ELF 文件头 第 20 ~ 23 字节...: 目标文件版本 ; 默认值 1 ; 01 00 00 00 小端格式 , 低位在低地址 , 值为 1 ; 四、可执行程序起始地址 ---- ELF 文件头 第 24 ~ 27 字节 : 如果 ELF...是可执行文件 , 应该从哪个地址开始执行代码 ; 该值在可执行 ELF 文件中才有意义 , 动态库文件没有意义 ; 00 00 00 00 小端格式 , 低位在低地址 , 值为 0 ; 当前解析的 ELF
领取专属 10元无门槛券
手把手带您无忧上云