ELF 是Executable and Linking Format的缩写,即可执行和可链接的格式,是Unix/Linux系统ABI (Application Binary Interface)规范的一部分. Unix/Linux下的可执行二进制文件.目标代码文件.共享库文件和core dump文件都属于ELF文件. 下面的图来自于文档 Executable and Linkable Format (ELF),描述了ELF文件的大致布局. 左边是ELF的链接视图,可以理解为是目标代码文件的内容布…
上一篇讲了ELF文件的总体布局,以及section和segment的概念.按照计划,今天继续讲 ELF header. 讲新的内容之前,先更正一个错误:上一篇中讲section header table中的条目和文件中的section是一一对应的,其实这么讲是不对的.一个section必定有一个section header来描述它,但一个section header不一定在文件中有对应的section,因为有的section是不占用文件字节的.segment也是这个道理. 这篇文章本来应该上周写…
0X01  ELF初认识 elf文件是linux下的二进制文件,相当于windows下的PE文件,Android系统里的dll. 解析elf文件两个用处:1.so加固:2.frida(xposed)检测: 0X02 so文件格式 SO文件格式,即ELF文件格式.它是Linux下可执行文件,共享库文件和目标文件的统一格式. 根据看待ELF文件的不同方式,ELF文件可以分为链接视图和装载视图. so文件大体上可分为四部分,一般来说从上往下是ELF头部->Pargarm头部->节区(Section)…
此文为静态分析ELF文件结构,遍历其中Elf_Ehdr文件头信息,遍历Elf_Shdr节表头信息,并将所有节放置在左侧树控件上,遍历Elf_Phdr程序头也放置在左侧树控件上,并着重分析字符串表,重定位表,符号表.遍历表头的使用使用map将节表信息对应字符串存入,当点击树控件的时候取出显示在右侧. 遍历程序头 Elf64_Phdr* Phdr = (Elf64_Phdr*)(m_szFileData+Elf_Ehdr->e_phoff); ;i<Elf_Ehdr->e_phnum;i++…
原地址:https://github.com/guanchao/elfParser 作者是用python2写的,现在给出我修改后的python3版本.(测试发现有bug,以后自己写个,0.0) 1 #!/usr/bin/env python 2 # coding:utf-8 3 4 import sys 5 import binascii 6 7 ''' 8 # 节区类型定义 9 /* sh_type */ 10 #define SHT_NULL 0 11 #define SHT_PROGBIT…
http://blog.csdn.net/jiafu1115/article/details/12992497 写一个汇编程序保存成文本文件max.s. 汇编器读取这个文本文件转换成目标文件max.o,目标文件由若干个Section组成,我们在汇编程序中声明的.section会成为目标文件中的Section,此外汇编器还会自动添加一些Section(比如符号表). 然后链接器把目标文件中的Section合并成几个Segment[28],生成可执行文件max. 最后加载器(Loader)根据可执行…
ELF文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,它有三种不同的类型: 可重定位的目标文件(Relocatable,或者Object File) 可执行文件(Executable) 共享库(Shared Object,或者Shared Library) ELF格式提供了两种不同的视角,链接器把ELF文件看成是Section的集合,而加载器把ELF文件看成是Segment的集合. 有一篇文章介绍elf文件的格式以及加载过程介绍的很详细,可以看一下,地址:http://ww…
对比windowsPE文件与概述 在windows中可执行文件是pe文件格式,Linux中可执行文件是ELF文件,其文件格式是ELF文件格式,在Linux下的ELF文件除了可执行文件(Excutable File),可重定位目标文件(RellocatableObject File).共享目标文件(SharedObjectFile).核心转储文件(Core DumpFile)也都是ELF格式文件. 一个典型的ELF文件大致的结构如下 文件头(ELF Header) 程序头表(Program Hea…
ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 ELF 文件中会包含很多 section,所有的 section 都在 section header table 中有对应的一项,每个 section header 都是一个 Elf32_Shdr 结构,用于描述相应 section 的信息.Elf32_Shdr 结构中有一个 sh_type 成员,用于指明 section 的类型. SHT_NULL:无效的 section header,没有与之对应的…
http://blog.csdn.net/joker0910/article/details/7655606 1. ELF中的section主要提供给Linker使用, 而segment提供给Loader用,Linker需要关心.text, .rel.text, .data, .rodata等等,关键是Linker需要做relocation.而Loader只需要知道Read/Write/Execute的属性.a.out格式没有这种区分.(注意现在使用gcc编译出来的a.out文件只是取该名字而已…