android逆向之ELF(so)文件格式详解(一)

理论略过。。。

ELF文件主要由 ELF header 、section header table、program header table组成

ELF header

 什么是ELFheader?

    所谓的elfHeader也就是系统要解析一个elf文件第一步需要解析的地方,怎么解析不是本章的主要,本章只分析elf文件整体的框架,方面在脑袋里形成图画。所以elf文件头部包含了整个elf文件重要组成部分的offset,什么是重要的组成部分?上面说到了section header table、program header table。

 ELFheader的组成:  

1.固定格式(ident/type/machine/version/entry):这些成员在同类型的elf文件中一般是固定的

2.sectionHeaderTable信息(shoff/shentsize/shnum):此三个成员描述的是sectionHeaderTable的偏移、单个大小、总个数

3.programHeaderTable信息(phoff/phentsize/phnum):同上,描述的是programHeaderTable的信息

4.字符串表在sectionHeaderTable中的位置(这个先不说了,说也说不明白,等第二篇解析ELF文件的时候在说,总之有这个东西)

 换句话说:通过elfHeader我们便可获取到elf文件的各种信息。因为已经获取到了其他两个table的偏移、单个大小、总个数

section header table

 什么是section header table?

    一句话:一个so里面所有的资源。如变量名、字符串、执行代码、got、plt等。。。

 sectionHeaderTable的组成:

1.由多个sectionHeader组成,至于是多少个?上面ELFHreader已经告诉我们了

2.每个sectionHeader又代表了不同的资源。如上面说的变量名、字符串、执行代码等。。。

换句话说:section header table表示so里面所有的资源的一个表单

program header table

什么是program header table?

 服务于sectionHreader的一张表!

sectionHeaderTable的组成:

1.一个sectionHeaderTable由多个segment组成.

2.而一个segment包含多个section

换句话说: 从组成结构上可以看得出他主要是服务于section的,而section又是so的资源,所以狭义上我们可以理解成此表为告诉计算机要怎么加载解析so资源的一张表.

 ELF文件格式介绍完了, 下一张介绍如何解析这张表,如上面说的偏移 大小 总个数 section program等.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值