Skip to content

Commit

Permalink
update readelf
Browse files Browse the repository at this point in the history
  • Loading branch information
kingking888 committed May 20, 2020
1 parent 75a40ca commit f6240b4
Show file tree
Hide file tree
Showing 9 changed files with 738 additions and 0 deletions.
8 changes: 8 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions .idea/AndroidReverseEngineering.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/inspectionProfiles/profiles_settings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

58 changes: 58 additions & 0 deletions readelf/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# AndroidReverseEngineering

安卓逆向工程之so文件分析

SO文件是Linux下共享库文件,它的文件格式被称为ELF文件格式。在Android逆向中对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资源的一张表.
使用:

Run readelf
然后输入so的路径


Loading

0 comments on commit f6240b4

Please sign in to comment.