文章目录

  • 一、ELF 文件简介
  • 二、ELF 文件结构

一、ELF 文件简介


ELF 文件是 Executable and Linkable Format ( 可执行 和 可链接 格式 ) 的文件 ;

链接 一般是在编译阶段 , 执行 一般是在运行阶段 ; 在这两个阶段都会用到 ELF 格式的文件 ;

参考 【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译 | 编译器指示字 ) 博客 ;

ELF 文件 对应的 Linux 中的目标文件格式有 : 库文件 , 可执行文件 , 编译中间文件 ; 编译中间文件有 .a , .o , .s 文件 ;

库文件 , 可执行文件 , 编译中间文件 , 都是 ELF 格式的文件 ;

在 Android 应用运行时 , ELF 文件的大部分内容 , 会被 映射到内存中 ; 这就意味着 Android 应用内存中的很多数据 , 会遵循 ELF 文件格式的规范 ;

ELF 文件格式最常见的形式就是 .so 动态库 ;

ELF 文件的特点 : ELF 文件是以 7F 45 4C 46 开头 , 其中 7F 是一个二进制标志 , 45 4C 46 是 ELF 字符对应的 ASCII 码 ;

二、ELF 文件结构


ELF 文件由以下四部分组成 :

  • ELF 文件头
  • ELF 程序头 : ELF 程序头 会告知 节区头部表的位置 ;
  • 节区或段
  • 节区头部表 : 节区头部表 会告知 ELF 文件中有多少个 节区 , 一般 节区头部表 一般都在 ELF 文件尾部 ;

【Android 逆向】ELF 文件格式 ( ELF 文件简介 | ELF 文件结构 )相关推荐

  1. 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )

    文章目录 一.PyCharm 中进行断点调试 二.ELFFile 实例对象分析 一.PyCharm 中进行断点调试 在上一篇博客 [Android 逆向]使用 Python 代码解析 ELF 文件 ( ...

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

    文章目录 一.PyCharm 中创建 Python 程序 二.导入 ELFFile 依赖库 三. 解析 ELF 文件 四. 博客源码 一.PyCharm 中创建 Python 程序 在 PyCharm ...

  3. 【Android 逆向】加壳技术简介 ( 动态加载 | 第一代加壳技术 - DEX 整体加固 | 第二代加壳技术 - 函数抽取 | 第三代加壳技术 - VMP / Dex2C | 动态库加壳技术 )

    文章目录 一.动态加载 二.第一代加壳技术 ( DEX 整体加固 ) 三.第二代加壳技术 ( 函数抽取 ) 四.第三代加壳技术 ( Java 函数 -> Native 函数 ) 五.so 动态库 ...

  4. elf文件格式_elf文件,readelf

    汽车电子开发过程中,代码完成后,程序编译完成 会生成 elf文件 或 hex文件,可以烧录到MCU中调试,那么究竟什么是 elf文件呢? elf 文件中又包含哪些信息? 如何解析 elf文件呢? 1. ...

  5. 【Android 逆向】substrate 框架 ( substrate 简介 | substrate 相关文档资料 )

    文章目录 一.substrate 简介 二.substrate 相关文档资料 一.substrate 简介 substrate 官网 : http://www.cydiasubstrate.com s ...

  6. Android逆向世界之一:smali文件

    亲测可用,如有问题请私信! 一直对android的逆向分析很感兴趣,这些年也陆陆续续反编译了一些android的项目,今天开始对这方面的知识做一下总结.先从android的apk文件开始讲起. APK ...

  7. Android逆向:二进制xml文件解析 之 Start Tag Chunk

    目录 1.xml结构 2.Start Tag Chunk Header 3.Start Tag Chunk Body 4.Atrributes 5.总结 在Android中,xml文件经过编译后都是不 ...

  8. Android Studio主要目录及文件简介

    原文:http://chenfeicqq.iteye.com/blog/1889135 build:构建目录,相当于Eclipse中默认Java工程的bin目录. libs: 依赖包  src:   ...

  9. Linux中GCC编译工具集中个软件的用途、gcc的简单编译以及ELF文件格式

    文章目录 一.gcc编译工具集中各软件的用途 1.1 GCC 1.2 Binutils 1.3 C运行库 二.简单编译 2.1 代码编译过程 2.2 多个程序文件的编译 2.3 检错 2.4 库文件连 ...

最新文章

  1. Scrapy爬虫及案例剖析
  2. 进程线程001 进程线程结构体和KPCR
  3. ug区域轮廓铣没有重叠距离_UG数控加工编程 _固定轴、可变轴曲面轮廓铣图文详解...
  4. java xml导出_java 导出xml文件的四种方式
  5. NeurIPS | 谷歌使用机器学习如何做好分布外异常检测
  6. 【Python3网络爬虫开发实战】1.2.1-Requests的安装
  7. MD5Init-MD5Update-MD5Final
  8. php视频转数据流,图像转数据流-aspphp | 鬼仔's Blog鬼仔's Blog
  9. xbox360 ubuntu14.04连接问题
  10. SkyDrive和Google Drive比较
  11. 使用matplotlib画色斑图
  12. archlinux i3wm flameshot使用
  13. 缺陷管理工具(jira,禅道)
  14. 克隆硬盘后进不去系统_Windows 10克隆后ssd硬盘不能引导启动
  15. 论文浏览(42) Action Genome: Actions as Composition of Spatio-temporal Scene Graphs
  16. python爬虫系列:获取获取自如房租信息
  17. 乐高编程学c语言吗,乐高编程和少儿编程的区别
  18. vb 回车换行符 分割 字符串
  19. Oracle数据库设计(开放式基金交易平台)
  20. 网络流--最大流问题

热门文章

  1. 使用wxSqlite3来解决sqlite加密问题zz
  2. 实验楼项目课学习笔记-jQuery翻转拼图游戏
  3. 运维笔试Shell编程题
  4. 『一本通』差分约束系统
  5. Windows批处理
  6. Java核心知识点 --- 线程中如何创建锁和使用锁 Lock , 设计一个缓存系统
  7. linux添加root级别账户
  8. matlab mod()rem()
  9. EL表达式中null和empty的区别
  10. 答辩完了该思考些什么