ELF(Executable and Linkable Format)
目录
. 引言
. ELF文件格式
. ELF格式分析工具
0. 引言
0x1: ELF文件类型
ELF文件标准里把系统中采用ELF格式的文件归为以下几类
. 可重定位文件(Relocatable File)
这类文件包含了代码和数据,可以被用来链接成可执行文件或共享目标文件,静态链接库也可以归为这一类
) .o文件 . 可执行文件(Executable File)
这类文件包含了可以直接执行的程序,它的代表就是ELF可执行文件,它们一般都没有扩展名
) /bin/bash文件 . 共享目标文件(Shared Object File)
这种文件包含了代码和数据,可以在以下两种情况下使用
) 链接器可以使用这种文件跟其他的可重定位文件和共享目标文件链接,产生新的目标文件
) 动态链接器可以将几个这种共享目标文件与可执行文件结合,作为进程映像的一部分来运行
共享目标文件典型的类型就是: .so文件 . 核心转储文件(Core Dump File)
当进程意外终止时,系统可以将该进程的地址空间的内容及终止时的一些其他信息转储到核心转储文件
) core dump
1. ELF文件格式
我们知道,对于windows中使用的PE文件结构来说,也存在一种"磁盘上PE结构"和"内存中PE结构"的概念,原因在于操作系统为了提高CPU的读写效率,会在将磁盘上的PE镜像装载映射到内存中的时候进行"内存页边界对齐"(例如对应32位机器来说就是4KB,不足4KB的用00进行Padding),所以我们在程序动态运行时查看进程的dump会看到大量的00
同样,对于Linux也是一样的,对于ELF格式来说,存在
. 链接视图(磁盘上的静态格式)
. 以及执行视图(内存中的运行时格式)
aaarticlea/png;base64,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" alt="" width="420" height="307" />
下面我们来详细学习一下ELF的文件格式
ELF中常用数据格式名称 |
大小 |
对齐 |
目的 |
Elf32_Addr |
4 |
4 |
无符号程序地址 |
Elf32_Half |
2 |
2 |
无符号中等整数 |
Elf32_Off |
4 |
4 |
无符号文件偏移 |
Elf32_SWord |
4 |
4 |
有符号大整数 |
Elf32_Word |
4 |
4 |
无符号大整数 |
unsigned char |
1 |
1 |
无符号小整数 |
0x1: ELF Header
文件开始处是一个ELF头部(ELF Header),用来描述整个文件的组织,这些信息独立于处理器,也独立于文件中的其余内容
/usr/include/elf.h
#define EI_NIDENT 16
typedef struct
{
/*
1. e_ident数组(16 bytes)
给出了ELF的一些标识信息
1) EI_MAG: 魔数(4 bytes): 标志此文件是一个 ELF 目标文件
1.1) e_ident[0]: 0x7f
1.2) e_ident[1]: 'E'
1.3) e_ident[2]: 'L'
1.4) e_ident[3]: 'F'
2) EI_CLASS: 文件的类别(1 byte):
或者说是位宽
2.1) ELFCLASSNONE: 0: 非法类别
2.2) ELFCLASS32: 1: 32位目标
2.3) ELFCLASS64: 2: 64位目标
3) EI_DATA: 处理器特定数据的数据编码方式
3.1) ELFDATANONE: 0: 非法数据编码
3.2) ELFDATA2LSB: 1: 高位在前
3.3) ELFDATA2MSB: 2: 低位在前
4) EI_VERSION: ELF 头部的版本号码,此值必须是EV_CURRENT
5) EI_PAD: 标记e_ident 中未使用字节的开始,初始化为0
*/
unsigned char e_ident[EI_NIDENT]; /*
2. e_type(2 bytes): 目标文件类型
1) ET_NONE: 0: 未知目标文件格式
2) ET_REL: 1: 可重定位文件
3) ET_EXEC: 2: 可执行文件
4) ET_DYN: 3: 共享目标文件
5) ET_CORE: 4: Core文件(转储格式0
6) ET_LOPROC: 0xff00: 特定处理器文件
7) ET_HIPROC: 0xffff: 特定处理器文件
ET_LOPROC和ET_HIPROC之间的取值用来标识与处理器相关的文件格式
*/
Elf32_Half e_type; /*
3. e_machine(2 bytes): 文件的目标体系结构类型
*/
Elf32_Half e_machine;
) EM_NONE: : 未指定
) EM_M32: : AT&T WE
) EM_SPARC: : SPARC
) EM_386: : Intel
) EM_68K: : Motorola
) EM_88K: : Motorola
) EM_860: : Intel
) EM_MIPS: : MIPS RS3000 /*
4. e_version(4 bytes): 目标文件版本
1) EV_NONE: 0: 非法版本
2) EV_CURRENT: 1: 当前版本
*/
Elf32_Word e_version; /*
5. e_entry(4 bytes): 程序入口的虚拟地址,如果目标文件没有程序入口,可以为0
*/
Elf32_Addr e_entry; /*
6. e_phoff(4 bytes): 程序头部表格(Program Header Table)的偏移量(按字节计算),如果文件没有程序头部表格,可以为0
*/
Elf32_Off e_phoff; /*
7. e_shoff(4 bytes): 节区头部表格(Section Header Table)的偏移量(按字节计算)。如果文件没有节区头部表格,可以为0
*/
Elf32_Off e_shoff; /*
8. e_flags(4 bytes): 保存与文件相关的,特定于处理器的标志。标志名称采用EF_machine_flag的格式
*/
Elf32_Word e_flags; /*
9. e_ehsize(2 bytes): ELF头部的大小(以字节计算)
*/
Elf32_Half e_ehsize; /*
10. e_phentsize(2 bytes): 程序头部表格的表项大小(按字节计算)
*/
Elf32_Half e_phentsize; /*
11. e_phnum(2 bytes): 程序头部表格的表项数目,可以为0
*/
Elf32_Half e_phnum; /*
12. e_shentsize(2 bytes): 节区头部表格的表项大小(按字节计算)
*/
Elf32_Half e_shentsize; /*
13. e_shnum(2 bytes): 节区头部表格的表项数目,可以为0
*/
Elf32_Half e_shnum; /*
14. e_shstrndx(2 bytes): 节区头部表格中与节区名称字符串表相关的表项的索引。如果文件没有节区名称字符串表,此参数可以为SHN_UNDEF
*/
Elf32_Half e_shstrndx;
}Elf32_Ehdr;
0x2: 程序头部表(Program Header Table)
可执行文件或者共享目标文件的程序头部的大致结构如下:
. 结构数组
每个数组元素表示:
) 一个"段"
1.1) 包含一个或者多个"节区"
程序头部仅对于可执行文件和共享目标文件有意义
) 或者"系统准备程序执行所必需的其它信息"
可执行目标文件在ELF头部的e_phentsize和e_phnum成员中给出其自身程序头部的大小以及元素数量
aaarticlea/png;base64,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" alt="" />
我们知道,程序头部表(Program Header Table)是个数组结构,它的每一个元素的数据结构如下
typedef struct
{
/*
1. p_type(4 bytes): 段类型
1) PT_NULL: 0: 此数组元素未用。结构中其他成员都是未定义的
2) PT_LOAD: 1: 此数组元素给出一个可加载的段,段的大小由p_filesz和p_memsz描述。文件中的字节被映射到内存段开始处。如果p_memsz大于p_filesz,"剩余"的字节要清零。p_filesz不能大于p_memsz。可加载
的段在程序头部表格中根据p_vaddr 成员按升序排列
3) PT_DYNAMIC: 2: 数组元素给出动态链接信息
4) PT_INTERP: 3: 数组元素给出一个NULL结尾的字符串的位置和长度,该字符串将被当作解释器调用。这种段类型仅对与可执行文件有意义(尽管也可能在共享目标文件上发生)。在一个文件中不能出现一次以上。如果存在
这种类型的段,它必须在所有可加载段项目的前面。
5) PT_NOTE: 4: 此数组元素给出附加信息的位置和大小
6) PT_SHLIB: 5: 此段类型被保留,不过语义未指定。包含这种类型的段的程序与ABI(应用程序二进制接口 Application Binary Interface,ABI)不符
7) PT_PHDR: 6: 此类型的数组元素如果存在,则给出了程序头部表自身的大小和位置,既包括在文件中也包括在内存中的信息。此类型的段在文件中不能出现一次以上。并且只有程序头部表是程序的内存映像的一部分时才起
作用。如果存在此类型段,则必须在所有可加载段项目的前面。
8) PT_LOPROC(0x70000000)~PT_HIPROC(0x7fffffff): 此范围的类型保留给处理器专用语义
*/
Elf32_Word p_type; /*
2. p_offset(4 bytes): 从文件头到该段第一个字节的偏移
*/
Elf32_Off p_offset; /*
3. p_vaddr(4 bytes): 段的第一个字节将被放到内存中的虚拟地址(思考为什么和磁盘上的静态偏移不同,结合内存对齐,页大小等知识)
*/
Elf32_Addr p_vaddr; /*
4. p_paddr(4 bytes): 用于与物理地址相关的系统中。因为System V忽略所有应用程序的物理地址信息,此字段对与可执行文件和共享目标文件而言具体内容是未指定的
*/
Elf32_Addr p_paddr; /*
5. p_filesz(4 bytes): 给出段在文件映像中所占的字节数。可以为0
*/
Elf32_Word p_filesz; /*
6. p_memsz(4 bytes): 给出段在内存映像中占用的字节数。可以为0
*/
Elf32_Word p_memsz; /*
7. p_flags(4 bytes): 给出与段相关的标志
*/
Elf32_Word p_flags; /*
8. p_align(4 bytes): 给出段在文件中和内存中如何对齐。数值0和1表示不需要对齐。否则p_align应该是个正整数,并且是2的幂次数,p_vaddr和p_offset对 p_align取模后应该相等
*/
Elf32_Word p_align;
} Elf32_phdr;
aaarticlea/png;base64,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" alt="" />
通过readelf和winhex进行对照学习
0x3: 节区
节区满足以下条件:
. 目标文件中的每个节区都有对应的节区头部描述它,反过来,有节区头部不意味着有节区
. 每个节区占用文件中一个连续字节区域(这个区域可能长度为0)
. 文件中的节区不能重叠,不允许一个字节存在于两个节区中的情况发生
. 目标文件中可能包含非活动空间(INACTIVE SPACE)。这些区域不属于任何头部和节区,其内容未指定
我们在使用winhex等工具观察ELF文件的时候,可能会发现节区的位置在节区表的前面,对于这点我们需要理解的是对于PE、或者ELF文件来说,每个部分在文件中的偏移位置并不需要严格规定,而只要能通过相应字段的指针进行明确定位就可以了。
例如,对于每个节区来说,在节区头表中的每一个元素(对应每一个节区)都有偏移字段来表明当前节区的偏移位置,则操作系统的loader就可以明确知道该去哪里取数据
0x4: 节区头部表 / 段表(Section Heade Table)
ELF文件中有很多各种各样的段,这个段表(Section Header Table)就是保存这些段的基本属性的结构,ELF文件的段结构就是由段表决定的,编译器、链接器、装载器都是依靠段表来定位和访问各个段的属性的
包含了描述文件节区的信息,ELF头部中,e_shoff成员给出从文件头到节区头部表格的偏移字节数,e_shnum给出表格中条目数目,e_shentsize 给出每个项目的字节数。从这些信息中可以确切地定位节区的具体位置、长度
和程序头部表一样,每一项节区在节区头部表格中都存在着一项元素与它对应,因此可知,这个节区头部表格为一连续的空间,每一项元素为一结构体(思考这节开头的那张节区和节区头部的示意图),那么这个结构体的定义如下
typedef struct
{
/*
1. sh_name(4 bytes): 节区名称,是"节区头部字符串表节区"(Section Header String Table Section)的索引。名字是一个NULL结尾的字符串。
所谓"节区头部字符串表节区",就是一段连续的保存每个节区名字的ascii字符的地址空间
*/
Elf32_Word sh_name; /*
2. sh_type(4 bytes): 为节区的内容和语义进行分类
1) SHT_NULL: 0: 此值标志节区头部是非活动的,没有对应的节区。此节区头部中的其他成员取值无意义
2) SHT_PROGBITS: 1: 此节区包含程序定义的信息,其格式和含义都由程序来解释
3) SHT_SYMTAB: 2: 此节区包含一个符号表。目前目标文件对每种类型的节区都只能包含一个,不过这个限制将来可能发生变化,通常情况下,SHT_SYMTAB节区提供用于链接编辑(指ld而言)的符号,尽管也可用来实现动态
链接。
4) SHT_STRTAB: 3: 此节区包含字符串表。目标文件可能包含多个字符串表节区。
5) SHT_RELA: 4: 此节区包含重定位表项,其中可能会有补齐内容(addend),例如32位目标文件中的Elf32_Rela类型。目标文件可能拥有多个重定位节区
6) SHT_HASH: 5: 此节区包含符号哈希表。所有参与动态链接的目标都必须包含一个符号哈希表。目前,一个目标文件只能包含一个哈希表,不过此限制将来可能会解除。
7) SHT_DYNAMIC: 6: 此节区包含动态链接的信息。目前一个目标文件中只能包含一个动态节区,将来可能会取消这一限制。
8) SHT_NOTE: 7: 此节区包含以某种方式来标记文件的信息。
9) SHT_NOBITS: 8: 这种类型的节区不占用文件中的空间,其他方面和SHT_PROGBITS相似。尽管此节区不包含任何字节,成员sh_offset中还是会包含概念性的文件偏移
10) SHT_REL: 9: 此节区包含重定位表项,其中没有补齐(addends),例如32位目标文件中的Elf32_rel类型。目标文件中可以拥有多个重定位节区
11) SHT_SHLIB: 10: 此节区被保留,不过其语义是未规定的。包含此类型节区的程序与ABI不兼容。
12) SHT_DYNSYM: 11: 作为一个完整的符号表,它可能包含很多对动态链接而言不必要的符号。因此,目标文件也可以包含一个SHT_DYNSYM节区,其中保存动态链接符号的一个最小集合,以节省空间
13) SHT_LOPROC(0x70000000)~SHT_HIPROC(0x7FFFFFFF): 这一段(包括两个边界),是保留给处理器专用语义的
14) SHT_LOUSER(0X80000000): 此值给出保留给应用程序的索引下界
15) SHT_HIUSER(0X8FFFFFFF): 此值给出保留给应用程序的索引上界
*/
Elf32_Word sh_type; /*
2. sh_flags(4 bytes): sh_flags字段定义了一个节区中包含的内容是否可以修改、是否可以执行等信息。如果一个标志位被设置,则该位取值为1。未定义的各位都设置为0(这是一种bitmap位图表示法)
1) SHF_WRITE: 0x1: 节区包含进程执行过程中将可写的数据
2) SHF_ALLOC: 0x2: 此节区在进程执行过程中占用内存。某些控制节区并不出现于目标文件的内存映像中,对于那些节区,此位应设置为0
3) SHF_EXECINSTR: 0x4: 节区包含可执行的机器指令
4) SHF_MASKPROC: 0xF0000000: 所有包含于此掩码中的四位都用于处理器专用的语义
*/
Elf32_Word sh_flags; /*
3. sh_addr(4 bytes): 如果节区将出现在进程的内存映像中,此成员给出节区的第一个字节应处的位置。否则,此字段为0
*/
Elf32_Addr sh_addr; /*
4. sh_offset(4 bytes): 此成员的取值给出节区的第一个字节与文件头之间的偏移。不过,SHT_NOBITS类型的节区不占用文件的空间,因此其sh_offset成员给出的是其概念性的偏移
*/
Elf32_Off sh_offset; /*
5. sh_size(4 bytes): 此成员给出节区的长度(字节数)。除非节区的类型是SHT_NOBITS,否则节区占用文件中的sh_size 字节。类型为SHT_NOBITS的节区长度可能非零,不过却不占用文件中的空间
*/
Elf32_Word sh_size; /*
6. sh_link(4 bytes): 此成员给出节区头部表索引链接。其具体的解释依赖于节区类型
根据节区类型的不同,sh_link和sh_info 的具体含义也有所不同
sh_type sh_link sh_info
SHT_DYNAMIC 此节区中条目所用到的字符串表格的节区头部索引 0
SHT_HASH 此哈希表所适用的符号表的节区头部索引 0
SHT_REL、SHT_RELA 相关符号表的节区头部索引 重定位所适用的节区的节区头部索引
SHT_SYMTAB、SHT_DYNSYM 相关联的字符串表的节区头部索引 最后一个局部符号(绑定 STB_LOCAL)的符号表索引值加一
其它 SHN_UNDEF 0
*/
Elf32_Word sh_link; /*
7. sh_info(4 bytes): 此成员给出附加信息,其解释依赖于节区类型
*/
Elf32_Word sh_info; /*
8. sh_addralign(4 bytes): 某些节区带有地址对齐约束。例如,如果一个节区保存一个doubleword,那么系统必须保证整个节区能够按双字对齐。sh_addr对sh_addralign取模,结果必须为0。目前仅允许取值为0和2的幂
次数。数值0和1表示节区没有对齐约束
*/
Elf32_Word sh_addralign; /*
9. sh_entsize(4 bytes): 某些节区中包含固定大小的项目,如符号表。对于这类节区,此成员给出每个表项的长度字节数。如果节区中并不包含固定长度表项的表格,此成员取值为0
*/
Elf32_Word sh_entsize;
}Elf32_Shdr;
aaarticlea/png;base64,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" alt="" />
根据获取DT_PLTGOT对应的地址,读取GOT[1]地址得到进程link_map信息
0x5: 重定位表
重定位表(".rel.text")位于段表之后,它的类型为(sh_type)为"SHT_REL",即重定位表(Relocation Table)
链接器在处理目标文件时,必须要对目标文件中某些部位进行重定位,即代码段和数据段中那些对绝对地址的引用的位置,这些重定位信息都记录在ELF文件的重定位表里面,对于每个须要重定位的代码段或者数据段,都会有一个相应的重定位表
一个重定位表同时也是ELF的一个段,这个段的类型(sh_type)就是"SHT_REL"
0x6: 字符串表
ELF文件中用到了很多字符串,比如段名、变量名等。因为字符串的长度往往是不定的,所以用固定的结构来表示比较困难,一种常见的做法是把字符串集中起来存放到一个表,然后使用字符串在表中的偏移来引用字符串
一般字符串表在ELF文件中也以段的形式保存,常见的段名为".strtab"(String Table 字符串表)或者".shstrtab"(Section Header String Table 段字符串表)
. ".strtab"(String Table 字符串表)
用来保存普通的字符串,比如符号的名字 . ".shstrtab"(Section Header String Table 段字符串表)
用来保存段表中用到的字符串,最常见的就是段名(sh_name)
Relevant Link:
http://www.cnblogs.com/LittleHann/archive/2013/06/14/3136111.html
http://files.cnblogs.com/LittleHann/ELF.pdf
http://blog.csdn.net/flydream0/article/details/8719036
《程序员的自我修养 : 第三章》
2. ELF格式分析工具
使用linux下提供的readelf可以很方便的查看和学习ELF文件格式
Usage: readelf <option(s)> elf-file(s)
Options are:
) -a --all: Equivalent to: -h -l -S -s -r -d -V -A -I
2_ -h --file-header: 仅显示ELF文件头部(ELF file header)
) -l --program-headers: 仅显示ELF程序头部(program headers)
) -S --section-headers: 显示ELF节区头部(sections' header)
) -t --section-details: 显示ELF节区详细信息(section details)
) -e --headers: Equivalent to: -h -l -S
) -s --syms: 显示ELF文件符号表(symbol table)
) -r --relocs: 显示ELF文件重定位表(relocations)
) -d --dynamic: 显示ELF文件动态节(rdynamic section) ted bytes
example:
code:
#include <stdio.h> main()
{
printf("hello\n");
}
ELF Info:
ELF Header:
Magic: 7f 4c
Class: ELF32
Data: 's complement, little endian
Version: (current)
OS/ABI: UNIX - System V
ABI Version:
Type: EXEC (Executable file)
Machine: Intel
Version: 0x1
Entry point address: 0x8048300
Start of program headers: (bytes into file)
Start of section headers: (bytes into file)
Flags: 0x0
Size of this header: (bytes)
Size of program headers: (bytes)
Number of program headers:
Size of section headers: (bytes)
Number of section headers:
Section header string table index: Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ ] NULL
[ ] .interp PROGBITS A
[ ] .note.ABI-tag NOTE A
[ ] .note.gnu.build-i NOTE A
[ ] .gnu.hash GNU_HASH 0804818c 00018c A
[ ] .dynsym DYNSYM 080481ac 0001ac A
[ ] .dynstr STRTAB 080481fc 0001fc 00004a A
[ ] .gnu.version VERSYM 00000a A
[ ] .gnu.version_r VERNEED A
[ ] .rel.dyn REL A
[] .rel.plt REL A
[] .init PROGBITS AX
[] .plt PROGBITS 080482c0 0002c0 AX
[] .text PROGBITS 00016c AX
[] .fini PROGBITS 0804846c 00046c 00001c AX
[] .rodata PROGBITS A
[] .eh_frame_hdr PROGBITS 0804849c 00049c A
[] .eh_frame PROGBITS 080484c0 0004c0 00007c A
[] .ctors PROGBITS 0804953c 00053c WA
[] .dtors PROGBITS WA
[] .jcr PROGBITS 0804954c 00054c WA
[] .dynamic DYNAMIC 0000c8 WA
[] .got PROGBITS WA
[] .got.plt PROGBITS 0804961c 00061c WA
[] .data PROGBITS WA
[] .bss NOBITS WA
[] .comment PROGBITS 00002c MS
[] .shstrtab STRTAB 0000fc
[] .symtab SYMTAB 000c10
[] .strtab STRTAB 0001fa
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings)
I (info), L (link order), G (group), x (unknown)
O (extra OS processing required) o (OS specific), p (processor specific) There are no section groups in this file. Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
PHDR 0x000034 0x08048034 0x08048034 0x00100 0x00100 R E 0x4
INTERP 0x000134 0x08048134 0x08048134 0x00013 0x00013 R 0x1
[Requesting program interpreter: /lib/ld-linux.so.]
LOAD 0x000000 0x08048000 0x08048000 0x0053c 0x0053c R E 0x1000
LOAD 0x00053c 0x0804953c 0x0804953c 0x000fc 0x00104 RW 0x1000
DYNAMIC 0x000550 0x08049550 0x08049550 0x000c8 0x000c8 RW 0x4
NOTE 0x000148 0x08048148 0x08048148 0x00044 0x00044 R 0x4
GNU_EH_FRAME 0x00049c 0x0804849c 0x0804849c 0x00024 0x00024 R 0x4
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4 Section to Segment mapping:
Segment Sections... .interp
.interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame
.ctors .dtors .jcr .dynamic .got .got.plt .data .bss
.dynamic
.note.ABI-tag .note.gnu.build-id
.eh_frame_hdr Dynamic section at offset 0x550 contains entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libc.so.]
0x0000000c (INIT) 0x8048290
0x0000000d (FINI) 0x804846c
0x6ffffef5 (GNU_HASH) 0x804818c
0x00000005 (STRTAB) 0x80481fc
0x00000006 (SYMTAB) 0x80481ac
0x0000000a (STRSZ) (bytes)
0x0000000b (SYMENT) (bytes)
0x00000015 (DEBUG) 0x0
0x00000003 (PLTGOT) 0x804961c
0x00000002 (PLTRELSZ) (bytes)
0x00000014 (PLTREL) REL
0x00000017 (JMPREL) 0x8048278
0x00000011 (REL) 0x8048270
0x00000012 (RELSZ) (bytes)
0x00000013 (RELENT) (bytes)
0x6ffffffe (VERNEED) 0x8048250
0x6fffffff (VERNEEDNUM)
0x6ffffff0 (VERSYM) 0x8048246
0x00000000 (NULL) 0x0 Relocation section '.rel.dyn' at offset 0x270 contains entries:
Offset Info Type Sym.Value Sym. Name
R_386_GLOB_DAT __gmon_start__ Relocation section '.rel.plt' at offset 0x278 contains entries:
Offset Info Type Sym.Value Sym. Name
R_386_JUMP_SLOT __gmon_start__
0804962c R_386_JUMP_SLOT __libc_start_main
R_386_JUMP_SLOT puts There are no unwind sections in this file. Symbol table '.dynsym' contains entries:
Num: Value Size Type Bind Vis Ndx Name
: NOTYPE LOCAL DEFAULT UND
: NOTYPE WEAK DEFAULT UND __gmon_start__
: FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2. ()
: FUNC GLOBAL DEFAULT UND puts@GLIBC_2. ()
: 0804848c OBJECT GLOBAL DEFAULT _IO_stdin_used Symbol table '.symtab' contains entries:
Num: Value Size Type Bind Vis Ndx Name
: NOTYPE LOCAL DEFAULT UND
: SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: 0804818c SECTION LOCAL DEFAULT
: 080481ac SECTION LOCAL DEFAULT
: 080481fc SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: 080482c0 SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: 0804846c SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: 0804849c SECTION LOCAL DEFAULT
: 080484c0 SECTION LOCAL DEFAULT
: 0804953c SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: 0804954c SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: 0804961c SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: SECTION LOCAL DEFAULT
: FILE LOCAL DEFAULT ABS crtstuff.c
: 0804953c OBJECT LOCAL DEFAULT __CTOR_LIST__
: OBJECT LOCAL DEFAULT __DTOR_LIST__
: 0804954c OBJECT LOCAL DEFAULT __JCR_LIST__
: FUNC LOCAL DEFAULT __do_global_dtors_aux
: OBJECT LOCAL DEFAULT completed.
: 0804963c OBJECT LOCAL DEFAULT dtor_idx.
: FUNC LOCAL DEFAULT frame_dummy
: FILE LOCAL DEFAULT ABS crtstuff.c
: OBJECT LOCAL DEFAULT __CTOR_END__
: OBJECT LOCAL DEFAULT __FRAME_END__
: 0804954c OBJECT LOCAL DEFAULT __JCR_END__
: FUNC LOCAL DEFAULT __do_global_ctors_aux
: FILE LOCAL DEFAULT ABS test.c
: 0804961c OBJECT LOCAL DEFAULT _GLOBAL_OFFSET_TABLE_
: 0804953c NOTYPE LOCAL DEFAULT __init_array_end
: 0804953c NOTYPE LOCAL DEFAULT __init_array_start
: OBJECT LOCAL DEFAULT _DYNAMIC
: NOTYPE WEAK DEFAULT data_start
: 080483d0 FUNC GLOBAL DEFAULT __libc_csu_fini
: FUNC GLOBAL DEFAULT _start
: NOTYPE WEAK DEFAULT UND __gmon_start__
: NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses
: OBJECT GLOBAL DEFAULT _fp_hw
: 0804846c FUNC GLOBAL DEFAULT _fini
: FUNC GLOBAL DEFAULT UND __libc_start_main@@GLIBC_
: 0804848c OBJECT GLOBAL DEFAULT _IO_stdin_used
: NOTYPE GLOBAL DEFAULT __data_start
: OBJECT GLOBAL HIDDEN __dso_handle
: OBJECT GLOBAL HIDDEN __DTOR_END__
: 080483e0 FUNC GLOBAL DEFAULT __libc_csu_init
: NOTYPE GLOBAL DEFAULT ABS __bss_start
: NOTYPE GLOBAL DEFAULT ABS _end
: FUNC GLOBAL DEFAULT UND puts@@GLIBC_2.
: NOTYPE GLOBAL DEFAULT ABS _edata
: 0804843a FUNC GLOBAL HIDDEN __i686.get_pc_thunk.bx
: 080483b4 FUNC GLOBAL DEFAULT main
: FUNC GLOBAL DEFAULT _init Histogram for `.gnu.hash' bucket list length (total of 2 buckets):
Length Number % of total Coverage
( 50.0%)
( 50.0%) 100.0% Version symbols section '.gnu.version' contains entries:
Addr: Offset: 0x000246 Link: (.dynsym)
: (*local*) (*local*) (GLIBC_2.) (GLIBC_2.)
: (*global*) Version needs section '.gnu.version_r' contains entries:
Addr: 0x0000000008048250 Offset: 0x000250 Link: (.dynstr)
: Version: File: libc.so. Cnt:
0x0010: Name: GLIBC_2. Flags: none Version: Notes at offset 0x00000148 with length 0x00000020:
Owner Data size Description
GNU 0x00000010 NT_GNU_ABI_TAG (ABI version tag) Notes at offset 0x00000168 with length 0x00000024:
Owner Data size Description
GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring)
Copyright (c) 2014 LittleHann All rights reserved
ELF(Executable and Linkable Format)的更多相关文章
- ELF Executable Reconstruction From A Core Image
catalog . INTRODUCTION . THE PROCESS IMAGE . THE CORE IMAGE . EXECUTABLE RECONSTRUCTION . FAILURES I ...
- ELF反调试初探
ELF反调试初探 http://www.freebuf.com/sectool/83509.html ELF(Executable and Linkable Format)是Unix及类Unix系统下 ...
- 操作系统实现(一):从Bootloader到ELF内核(转载)
原文链接: http://www.cppblog.com/airtrack/archive/2014/10/30/208729.html Bootloader 我们知道计算机启动是从BIOS开始,再由 ...
- linux下可执行程序的装载和启动
张雨梅 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-10000 1.c文件的编译 图中显示了c ...
- 安装opensuse的笔记-重庆linux开源组织
mate: 伙伴 matey: 融洽的, 易于亲近的. get matey with sb. poison: a. 有毒的, n.毒药/毒酒v. 下毒, 破坏, 污染 slander [ 撕烂的~~] ...
- C++小思
Bjarne那稀疏的棕褐色头发, 有点红的眼睛, 这个可爱的好老头, 感觉他更应该是一个哲学家, 因为他用编程的语言C++ 揭示了我们这个纷繁复杂世界的本质: 对象. 对的, 世界是由对象组成的, 并 ...
- 戴文的Linux内核专题:07内核配置(3)
转自Linux中国 OK,我们还继续配置内核.还有更多功能等待着去配置. 下一个问题(Enable ELF core dumps (ELF_CORE))询问的是内核是否可以生成内核转储文件.这会使内核 ...
- RFID开发利器 proxmark3
Proxmark3 介绍 Proxmark3是由Jonathan Westhues设计并且开发的开源硬件,其主要用RFID的嗅探.读取以及克隆等的操作.其官方网站为:Jonathan Westhues ...
- 苹果ipa软件包破解笔记
苹果的验证机制: Appstore上的应用都採用了DRM(digital rights management)数字版权加密保护技术,直接的表现是A帐号购买的app,除A外的帐号无法使用,事实上就是有了 ...
随机推荐
- Studio 从入门到精通 (一)
目标:Android Studio新手–>下载安装配置–>零基础入门–>基本使用–>调试技能–>构建项目基础–>使用AS应对常规应用开发 AS简介 经过2年时间的研 ...
- jenkins忘记管理员登陆密码的补救措施
jenkins可以作为我们日常运维过程中代码上线的发版平台,所以对jenkins的安全可靠的维护是十分重要的. 1)在登陆jenkins的时候,如果忘记普通用户的登陆密码,只要能用管理员账号登陆,还可 ...
- 分布式监控系统Zabbix-3.0.3-完整安装记录(4)-解决zabbix监控图中出现中文乱码问题
之前部署了Zabbix-3.0.3监控系统,在安装数据库时已经将zabbix库设置了utf-8字符. 首先确定zabbix开启了中文支持功能:登录到zabbix服务器的数据目录下(前面部署的zabbi ...
- javascript去掉空格
1. 去掉字符串前后所有空格: 代码如下: function Trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); } 说明 ...
- f2fs解析(四)f2fs的extent特性
extent的意思是“程度”,但是我还是搞不清楚要如何把“程度”和我理解的extent联系到一起. 文件的偏移和page-cache的映射关系体现在address space 中的一颗基数树上:当基数 ...
- KindEditor
1.官网 www.kindsoft.net 2.MVC下空置处理 例: 页面使用 @model XXModel....@Html.EditorFor(model => model.Content ...
- Linux 网络编程二(Socket创建)
TCP通信 一个程序使用套接字需要执行4个步骤. --分配套接口和初始化 --连接 --发送或接收数据 --关闭套接字 涉及到的调用包括socket.bind.listen.connect(阻塞线程) ...
- Backbone源码分析-Backbone架构+流程图
作者:nuysoft/高云/nuysoft@gmail.com 声明:本文为原创文章,如需转载,请注明来源并保留原文链接. Backbone0.9.1源码分析分析系列 jQuery1.6.1源码分析系 ...
- ZooKeeper学习第六期---ZooKeeper机制架构
一.ZooKeeper权限管理机制 1.1 权限管理ACL(Access Control List) ZooKeeper 的权限管理亦即ACL 控制功能,使用ACL来对Znode进行访问控制.ACL的 ...
- 2016科幻惊悚《第五波》HD720P.中英双字
导演: J·布莱克森编剧: 苏珊娜·格兰特 / 阿齐瓦·高斯曼 / 杰夫·皮克纳 / 瑞克·杨西主演: 科洛·莫瑞兹 / 尼克·罗宾森 / 朗·里维斯顿 / 玛姬·丝弗 / 亚历克斯·罗伊 / 更多. ...