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

Linux ELF笔记

最近在研究ARM cpu 32 bit转码 64bit的事情,以用于在64bit的服务器上可以更快的运行32bit的Android ELF文件。 特意写篇东西做一下笔记。...ELF头部的结构体为 elf32_hdr 或 elf64_hdr, 在Android系统源代码的 /bionic/libc/kernel/uapi/linux/elf.h 可以找到。...EI_OSABI Offset: 7 Length: 1 Type: Number (unsigned char) 指出来该 ELF 文件可以在什么操作系统运行,参考: #define ELFOSABI_NONE...EI_ABIVERSION Offset: 8 Length: 1 Type: Number (unsigned char) 指出该 ELF 文件可以在哪个API版本下运行,Android下的默认值是...ET_EXEC 指的是可执行程序, 存在程序入口, 有 Program Header, 可以加载到内存中运行, 在 Linux 下的可执行程序都是这样的。 ET_DYN 特指动态链接库。

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

Linux无文件渗透执行ELF

01 简介 在进行Linux系统的攻击应急时,大家可能会查看pid以及/proc相关信息,比如通过/proc/$pid/cmdline查看某个可疑进程的启动命令,通过/proc/$pid/...02 技术核心 这里向大家介绍一个linux系统的底层调用函数memfd_create(2),它在内核3.17中引入,会创建一个匿名文件并返回一个文件描述符指向它,该文件表现和常规文件类同, 可以进行修改...这里还有一个问题,如何将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.4K80

Linux 修改 ELF 解决 glibc 兼容性问题

转自:Soul Of Free Loop链接:https://zohead.com/archives/mod-elf-glibc/ Linux glibc 问题 相信有不少 Linux 用户都碰到过运行第三方...(非系统自带软件源)发布的程序时的 glibc 兼容性问题,这一般是由于当前 Linux 系统上的 GNU C 库(glibc)版本比较老导致的,例如我在 CentOS 6 64 位系统上运行某第三方闭源软件时会报...修改 ELF 符号表 由于 Linux 系统中的 LD 库(也就是 /lib64/ld-linux-x86-64.so.2 库)加载 ELF 时检查 .gnu.version_r 表中的符号,我们可以使用任何一款十六进制编辑器来修改...文件的 .gnu.version_r 表(因为 patchelf 运行之后新 ELF 文件的符号表就和之前的不一样了),将 GLIBC_2.17 和 GLIBC_2.14 统一改为 GLIBC_2.2.5...符号,保存 ELF 文件之后就可以看到效果了: [root@centos6-dev ~]# ldd tester linux-vdso.so.1 => (0x00007fffc17ee000

4.1K20

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

Linux可执行文件类型的注册机制 在说明ELF文件的加载过程以前,我们先回答一个问题,就是: 为什么Linux可以运行ELF文件?.../binfmts.h中 linux支持其他不同格式的可执行程序, 在这种方式下, linux运行其他操作系统所编译的程序, 如MS-DOS程序, 活BSD Unix的COFF可执行格式, 因此linux...1 }; 要支持ELF文件的运行,则必须向内核登记注册elf_format这个linux_binfmt类型的数据结构,加入到内核支持的可执行程序的队列中。...linux_binfmt * fmt) 当需要运行一个程序时,则扫描这个队列,依次调用各个数据结构所提供的load处理程序来进行加载工作,ELF中加载程序即为load_elf_binary,内核中已经注册的可运行文件结构...linux_binfmt会让其所属的加载程序load_binary逐一前来认领需要运行的程序binary,如果某个格式的处理程序发现相符后,便执行该格式映像的装入和启动 内核空间的加载过程load_elf_binary

7.2K51

解决linux安装软件:libld-linux.so.2: bad ELF interpreter问题

问题一,64位系统中安装了32位程序解决办法 是因为64位系统中安装了32位程序 解决方法: yum install glibc.i686 问题二,解决交叉编译环境错误 # arm-linux-gcc...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...                                                                            104 kB/s | 4.3 MB     00:42     运行事务检查

12.7K1918
领券