失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 可执行文件(ELF文件)解析

可执行文件(ELF文件)解析

时间:2020-03-25 03:25:03

相关推荐

可执行文件(ELF文件)解析

缩写:

ABI (Application Binary Interface) 应用程序二进制接口

TIS (Tool Interface Standards) 工具接口标准

TIS 委员会:一个微型计算机工业联合组织,致力于为32位操作系统下的开发工具提供标准化的软件接口。包括:目标标志格式、可执行文件格式、调试信息格式。委员会成员来自 Absoft、Autodesk、Borland、IBM、Intel,etc。

1. 文件格式

可执行程序 也是一个文件。类似于txt,markdown等文件。不同格式文件为不同目的存在。txt文件目的服务于人阅读所以存储成可以阅读的ASCII、UTF-8,内容的bit 0、1 符合 ASCII、UTF-8的编码规范存储。同理markdown 要符合md格式规范。可执行程序文件的阅读对象是操作系统。不同操作系统平台对自己阅读的可执行程序有不同的规范要求。下表为操作系统对应的可执行程序文件格式:

linux : ELF (Executable and LinkingFormat)

Mac (MacOS / iOS) :mach-O (mach-object)

Windows : PE (Portable Executable)

本文关注 linux OS ELF 格式的了解。

2. ELF 历史、标准 及 工具

最初由 Unix 系统实验室 作为 应用程序二进制接口的一部分制定发布。之后 ELF文件格式规范 由TIS委员会制定。

英文 标准原文:/elf/elf.pdf

工具:作用 (下面内容,本人大部分位置,接下来只展开部分,需要详细,请告知,另拿出来分析讨论)

strings : 输出 ELF 中所有字符串

strip : 删除ELF 中无用信息

nm : 列举ELF 目标文件 符号

size : 显示 目标文件段(section)大小,以及目标文件大小

readelf : 显示ELF 文件的内容

objdump : 显示目标文件信息,可用于反汇编

ar : 建立 start library

addr2line : 将地址转换成文件、行号

接下来基于 readelf 工具对 ELF 文件 展开分析。

3. ELF文件内容解析

3.1 readelf视角

3.1.1 readelf 历史

GNU development tools 集合成员。License:"GNU Free Documentation License"

其他 GNU 开源代码路径:/gnu/

readelf 包含在GNU的binutils工具包中:/gnu/binutils

3.1.2 ELF 文件内容

ELF 文件 包含 3个 Header:

ELF Header:介绍 ELF的版本,大小端、Executable\Linking 等 其他概要信息

Section Headers : 各个段信息,包括 段的大小,起始地址

Program Headers : 应用程序加载到操作系统,供操作系统阅读。

一个 Section group: (未知,待学习)

多个Section:Section Headers 中提到的成员的展开。

4. 举例解析

4.1 可执行程序

1) main.c 源文件

2) main 可执行程序(程序运行时,cpu读取的文件),下图通过hexdump 读取, 截图了部分

3) 通过 readelf 读取 main,截图部分内容

4.2 动态lib库

4.3 源文件编译后的没有连接的二进制文件

reference:

1. /papers/Archive/refs/elf/Understanding_ELF.pdf

2. /elf/elf.pdf

3. / linux 各种基础资料的获取地址

4. /lcxhjg/article/details/80938350 工具分析的博客

5. /

6./elf/index.html elf 历史介绍

如果觉得《可执行文件(ELF文件)解析》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。