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

Linux文件渗透执行ELF

02 技术核心 这里向大家介绍一个linux系统的底层调用函数memfd_create(2),它在内核3.17中引入,会创建一个匿名文件并返回一个文件描述符指向它,该文件表现和常规文件类同, 可以进行修改...ELF文件内容 ?...这里还有一个问题,如何将elf二进制文件写入到创建的文件当中,@MagisterQuis这里使用open函数将$FH内容添加进创建的匿名文件$fd当中,而$FH通过perl转化自要执行的elf文件,这就是该脚本的第二部分...可以看到我们的elf文件最终以匿名文件的方式在内存中被加载执行了,从匿名文件运行的程序与运行于普通文件的程序之间唯一真正的区别是/proc/pid/exe符号链接。...参考: https://magisterquis.github.io/2018/03/31/in-memory-only-elf-execution.html http://man7.org/linux

5.5K80

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

文章目录 一、ELF 文件简介 二、ELF 文件结构 一、ELF 文件简介 ---- ELF 文件是 Executable and Linkable Format ( 可执行 和 可链接 格式 ) 的文件...| 编译器指示字 ) 博客 ; ELF 文件 对应的 Linux 中的目标文件格式有 : 库文件 , 可执行文件 , 编译中间文件 ; 编译中间文件有 .a , .o , .s 文件 ; 库文件 ,...可执行文件 , 编译中间文件 , 都是 ELF 格式的文件 ; 在 Android 应用运行时 , ELF 文件的大部分内容 , 会被 映射到内存中 ; 这就意味着 Android 应用内存中的很多数据..., 会遵循 ELF 文件格式的规范 ; ELF 文件格式最常见的形式就是 .so 动态库 ; ELF 文件的特点 : ELF 文件是以 7F 45 4C 46 开头 , 其中 7F 是一个二进制标志..., 45 4C 46 是 ELF 字符对应的 ASCII 码 ; 二、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文件加载

前面章节我们了解了ELF文件的头部结构,这次我们深入了解另一个非常重要的数据结构,那就是程序表头。操作系统严重依赖该结构来加载ELF文件或是实现动态链接。...程序表头反映的是当ELF加载到内存后所形成的“视图”或结构,也就是说ELF文件存在硬盘上或者被加载到内存,它展现出来的形态不一致。...a.out可以读取程序表头内容信息: ?...其安装可以使用如下命令: sudo apt-get install -y libbfd-dev 基本上所有版本的Linux都会附带这个代码库,该代码库提供了一个类叫Binary,用于对可执行二进制文件的抽象...Binary类用于对整个elf文件的抽象,通过它可以访问ELF文件相关信息,Section是对前面章节描述的段对象的抽象,Symbol是对前面章节符号表对象的抽象。

1.6K30

ELF文件格式

文章目录 源码到可执行文件 ELF文件格式 ELF File header Program header Section header 工具 Symbol Table 源码到可执行文件 linux中四类文件使用...https://man7.org/linux/man-pages/man5/elf.5.html 1999年86open项目选择ELF作为x86处理器上Unix和类Unix系统的标准二进制文件格式。...例如这些扩展名的文件一般都是elf格式:.axf, .bin, .elf, .o, .prx, .puff, .ko, .so, and .mod ELF文件格式 引用wiki的一张图: https...Section包含目标文件除了ELF文件头、程序头表、section头表的所有信息,而且目标文件section满足几个条件: 目标文件中的每个section都只有一个section头项描述,可以存在不指示任何...implementation is provided by GNU Binutils. elfutils provides alternative tools to GNU Binutils purely for Linux

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

ELF文件格式简介

,一般用于类Unix系统,比如Linux,Macox等。...比如编译的中间产物.o文件; 可执行文件:一个可执行文件; 共享目标文件:共享库。文件保存着代码和合适的数据,用来被下连接编辑器和动态链接器链接。比如linux下的.so文件。...2 ELF文件格式   在编译过程中ELF文件格式在链接和程序的运行阶段的格式不同。...2.1 ELF Header   ELF文件头描述了ELF文件的基本类型,地址偏移等信息,分为32bit和64bit两个版本,定义于linux源码的/usr/include/elf.h文件中。...,EI_OSABI,EI_PAD是linux源码中定义的宏,取值分别为0-7,分别对应各个字段的下标;下面的宏定义将采用类似EI_MAG0(0)的方式,表示EI_MAG0的值为0。

1.9K30

详解 Linux 可执行文件 ELF 文件的内部结构

linux 中,可执行文件、Object文件、动态库文件都是ELF格式文件,他相当于 windows 操作系统中的 PE 文件。 通过 readelf 命令可以读取 ELF 文件的内容。 3....unsigned char 1 1 无符号小整数 下图展示了上篇文章中我们生成的两个文件通过 readelf 命令读取到的头信息: 3.2....别忘了我们的目标,我们需要通过汇编语言编写的 loader 程序将在 linux 环境上编译的 C 语言内核程序载入到内存并执行,因此,实际上我们只需要知道 ELF 文件需要如何被载入内存,并从哪里开始执行...也就是说,我们通过 ELF header 中的字段,找到 Program Header Table,然后读取每个 Program Header,将对应的段载入到内存指定的位置,然后跳转,即可实现可执行文件的执行了...这样一来,是不是读取 ELF 文件并载入内存的工作已经呼之欲出了呢? 敬请期待博主下一篇文章,详细讲解 loader 加载内核的完整代码。 5.

2.6K20

【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文件格式解析 《Android软件安全权威指南》8.4-原生程序文件格式 Android平台感染ELF文件实现模块注入 elf文件类型六 Dynamic Section(动态section...:程序节区,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文件还有个...通过Program Header Table定位,首先找到dynamic段,然后读取遍历dynamic段的条目,找到DT_STRTAB,后边的值即为.dynstr的偏移。

2.4K40

详解ELF可执行文件格式:读取头部信息和程序表头

这一节我们先掌握如何读取头部信息和程序表头,我们先看ELF文件的大致结构: ? ELF文件格式最重要的就是所谓的段,特别是其中的代码段和数据段。对应上图就是.text,.data两个段。...: https://man7.org/linux/man-pages/man5/elf.5.html 我们本次要解读ELF文件的两个部分,一个是其文件头。...文件头描述了ELF文件很多重要信息,例如它运行的平台,支持的CPU类型等。使用命令行readelf -h 可以读取指定ELF文件的头部信息,如下图所示: ?...e_machine用于表明它运行的CPU类型,e_entry表示它被加载到内存后,第一条指令所在的虚拟地址,e_phoff表示程序表头相对于该文件内部偏移,后面我们要读取程序表头时需要使用该值。...深刻掌握ELF文件结构及其加载原理是实现Linux上二进制劫持的基础,其过程很烦琐,同时又涉及到很多平常用不上的关于硬件和体系结构的知识,能否啃得下这些枯燥的知识点,决定了一个人是否有毅力和决心在技术之路上走的足够远并且最终能脱颖而出

3.7K20

ELF文件的加载过程(load_elf_binary函数详解)--Linux进程的管理与调度(十三)

Linux可执行文件类型的注册机制 在说明ELF文件的加载过程以前,我们先回答一个问题,就是: 为什么Linux可以运行ELF文件?...而我们研究的ELF文件格式的linux_binfmt结构对象elf_format, 定义如下, 在/fs/binfmt.c中 static struct linux_binfmt elf_format...“解释器”段实际上只是一个字符串, 即解释器的文件名,如”/lib/ld-linux.so.2”, 或者64位机器上对应的叫做”/lib64/ld-linux-x86-64.so.2” 有了解释器的文件名以后...填写目标文件的参数环境变量等必要信息 start_kernel宏准备进入新的程序入口 ELF文件中符号的动态解析过程 前面我们提到了内核空间中ELF文件的加载工作 内核的工作 内核首先读取ELF文件头部...程序开始执行 具体的信息可以参照 Intel平台下LinuxELF文件动态链接的加载、解析及实例分析(一): 加载 Intel平台下linuxELF文件动态链接的加载、解析及实例分析(

7.4K51
领券