readelf 与 ELF 文件格式分析

版权声明:转载请写明出处,谢谢! https://blog.csdn.net/wilson1068/article/details/87867127

readelf 与 ELF 文件格式分析

ELF 格式

可执行与可链接格式(英语:Executable and Linkable Format,缩写为 ELF),常被称为 ELF 格式,在计算机科学中,是一种用于可执行文件、目标文件、共享库和核心转储的标准文件格式。

可以通过 ELF 格式读取 ELF 文件的一些信息。

ELF 文件类型:

  1. 可重定位的对象文件 (Relocatable file)

  由汇编器汇编生成的 .o 文件

  1. 可执行的对象文件 (Executable file)

  可执行应用程序

  1. 可被共享的对象文件 (Shared object file)

  动态库文件,也即 .so 文件

ELF 文件组成:

  • ELF 头(ELF header)
  • 程序标头表(Program header table)
  • Section 标头表(Section header table):链接与重定义需要的数据
  • 程序标头与 Section 标头需要的数据:.text(可执行代码),.data(被初始化的数据),.bss(未初始化的数据),.symtab.dynsym(符号信息),strtabdynstr(字符串信息)等

实际的 ELF 文件不一定如下图所示的包含其中的信息和位置顺序。

只有 ELF 头的位置是固定的,其它信息包含在 ELF 头中。

ELF 文件组成

ELF 头(ELF header)

#define EI_NIDENT 16

typedef struct {
  unsigned char e_ident[EI_NIDENT]; // 开头 3 个字节固定不变,为 0x7F, 'E', 'L', 'F',其它是与机器无关的信息
  Elf32_Half e_type;                // 标识该文件的类型
  Elf32_Half e_machine;             // 运行该程序需要的体系结构
  Elf32_Word e_version;             // 文件的版本
  Elf32_Addr e_entry;               // 程序的入口地址
  Elf32_Off  e_phoff;               // Program header table 在文件中的偏移量(以字节计数)
  Elf32_Off  e_shoff;               // Section header table 在文件中的偏移量(以字节计数)
  Elf32_Word e_flags;               // 其它
  Elf32_Half e_ehsize;              // ELF header 大小(以字节计数)
  Elf32_Half e_phentsize;           // Program header table 中每一个条目的大小
  Elf32_Half e_phnum;               // Program header table 中条目数量
  Elf32_Half e_shentsize;           // Section header table 中的每一个条目的大小
  Elf32_Half e_shnum;               // Section header table 中条目数量
  Elf32_Half e_shstrndx;            // 包含节名称的字符串是第几个节(从零开始计数)
} Elf32_Ehdr;

数据类型说明:

数据类型 大小 对齐 用途
Elf32_Addr 4 4 无符号程序地址
Elf32_Half 2 2 无符号中等大小整数
Elf32_Off 4 4 无符号文件偏移
Elf32_Sword 4 4 有符号大整数
Elf32_Word 4 4 无符号大整数
unsigned char 1 1 无符号小整数

程序标头

Program header 描述的是一个段在文件中的位置、大小以及它被放进内存后所在的位置和大小。

typedef struct {
    Elf32_Word p_type;      // 当前 Program header 所描述的段的类型
    Elf32_Off  p_offset;    // 第一个字节在文件中的偏移
    Elf32_Addr p_vaddr;     // 一个字节在内存中的虚拟地址
    Elf32_Addr p_paddr;     // 在物理内存定位相关的系统中,此项是为物理地址保留
    Elf32_Word p_filesz;    // 文件中的长度
    Elf32_Word p_memsz;     // 内存中的长度
    Elf32_Word p_flags;     // 与段相关的标志
    Elf32_Word p_align;     // 根据此项值来确定段在文件及内存中如何对齐
}

通过 readelf 命令分析 ELF 文件

不同的架构下也有不同的 readelf 命令,比如 android 的命令:arm-linux-androideabi-readelf

readelf 命令主要参数:

  -a --all               Equivalent to: -h -l -S -s -r -d -V -A -I
  -h --file-header       Display the ELF file header
  -l --program-headers   Display the program headers
     --segments          An alias for --program-headers
  -S --section-headers   Display the sections' header
     --sections          An alias for --section-headers
  -g --section-groups    Display the section groups
  -t --section-details   Display the section details
  -e --headers           Equivalent to: -h -l -S
  -s --syms              Display the symbol table
     --symbols           An alias for --syms
  --dyn-syms             Display the dynamic symbol table
  -n --notes             Display the core notes (if present)
  -r --relocs            Display the relocations (if present)
  -u --unwind            Display the unwind info (if present)
  -d --dynamic           Display the dynamic section (if present)
  -V --version-info      Display the version sections (if present)
  -A --arch-specific     Display architecture specific information (if any)
  -c --archive-index     Display the symbol/file index in an archive
  -D --use-dynamic       Use the dynamic section info when displaying symbols
  -x --hex-dump=<number|name>
                         Dump the contents of section <number|name> as bytes
  -p --string-dump=<number|name>
                         Dump the contents of section <number|name> as strings
  -R --relocated-dump=<number|name>
                         Dump the contents of section <number|name> as relocated bytes
  -z --decompress        Decompress section before dumping it
  -w[lLiaprmfFsoRt] or
  --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,
               =frames-interp,=str,=loc,=Ranges,=pubtypes,
               =gdb_index,=trace_info,=trace_abbrev,=trace_aranges,
               =addr,=cu_index]
                         Display the contents of DWARF2 debug sections
  --dwarf-depth=N        Do not display DIEs at depth N or greater
  --dwarf-start=N        Display DIEs starting with N, at the same depth
                         or deeper
  -I --histogram         Display histogram of bucket list lengths
  -W --wide              Allow output width to exceed 80 characters
  @<file>                Read options from <file>
  -H --help              Display this information
  -v --version           Display the version number of readelf

查看 .so 文件依赖库:arm-linux-androideabi-readelf -d libtest.so

Dynamic section at offset 0x2e8c contains 30 entries:
  Tag        Type                         Name/Value
 0x00000003 (PLTGOT)                     0x3fb8
 0x00000002 (PLTRELSZ)                   120 (bytes)
 0x00000017 (JMPREL)                     0x7b4
 0x00000014 (PLTREL)                     REL
 0x00000011 (REL)                        0x6ec
 0x00000012 (RELSZ)                      200 (bytes)
 0x00000013 (RELENT)                     8 (bytes)
 0x6ffffffa (RELCOUNT)                   23
 0x00000006 (SYMTAB)                     0x1f0
 0x0000000b (SYMENT)                     16 (bytes)
 0x00000005 (STRTAB)                     0x360
 0x0000000a (STRSZ)                      600 (bytes)
 0x00000004 (HASH)                       0x5b8
 0x00000001 (NEEDED)                     Shared library: [liblog.so]
 0x00000001 (NEEDED)                     Shared library: [../../../../src/main/jniLibs/armeabi-v7a/libjudgehdr.so]
 0x00000001 (NEEDED)                     Shared library: [../../../../src/main/jniLibs/armeabi-v7a/libldr2hdr.so]
 0x00000001 (NEEDED)                     Shared library: [libm.so]
 0x00000001 (NEEDED)                     Shared library: [libdl.so]
 0x00000001 (NEEDED)                     Shared library: [libc.so]
 0x0000000e (SONAME)                     Library soname: [libcvteresearch_facehdr.so]
 0x0000001a (FINI_ARRAY)                 0x3e3c
 0x0000001c (FINI_ARRAYSZ)               8 (bytes)
 0x0000001e (FLAGS)                      BIND_NOW
 0x6ffffffb (FLAGS_1)                    Flags: NOW
 0x6ffffff0 (VERSYM)                     0x660
 0x6ffffffc (VERDEF)                     0x690
 0x6ffffffd (VERDEFNUM)                  1
 0x6ffffffe (VERNEED)                    0x6ac
 0x6fffffff (VERNEEDNUM)                 2
 0x00000000 (NULL)                       0x0

查看 ELF 头:arm-linux-androideabi-readelf -h libtest.so

ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           ARM
  Version:                           0x1
  Entry point address:               0x0
  Start of program headers:          52 (bytes into file)
  Start of section headers:          148172 (bytes into file)
  Flags:                             0x5000200, Version5 EABI, soft-float ABI
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         8
  Size of section headers:           40 (bytes)
  Number of section headers:         39
  Section header string table index: 38

完整信息:arm-linux-androideabi-readelf -all libtest.so

ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           ARM
  Version:                           0x1
  Entry point address:               0x0
  Start of program headers:          52 (bytes into file)
  Start of section headers:          148172 (bytes into file)
  Flags:                             0x5000200, Version5 EABI, soft-float ABI
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         8
  Size of section headers:           40 (bytes)
  Number of section headers:         39
  Section header string table index: 38

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .note.android.ide NOTE            00000134 000134 000098 00   A  0   0  4
  [ 2] .note.gnu.build-i NOTE            000001cc 0001cc 000024 00   A  0   0  4
  [ 3] .dynsym           DYNSYM          000001f0 0001f0 000170 10   A  4   1  4
  [ 4] .dynstr           STRTAB          00000360 000360 000258 00   A  0   0  1
  [ 5] .hash             HASH            000005b8 0005b8 0000a8 04   A  3   0  4
  [ 6] .gnu.version      VERSYM          00000660 000660 00002e 02   A  3   0  2
  [ 7] .gnu.version_d    VERDEF          00000690 000690 00001c 00   A  4   1  4
  [ 8] .gnu.version_r    VERNEED         000006ac 0006ac 000040 00   A  4   2  4
  [ 9] .rel.dyn          REL             000006ec 0006ec 0000c8 08   A  3   0  4
  [10] .rel.plt          REL             000007b4 0007b4 000078 08   A  3   0  4
  [11] .plt              PROGBITS        0000082c 00082c 0000c8 00  AX  0   0  4
  [12] .text             PROGBITS        000008f4 0008f4 00179c 00  AX  0   0  4
  [13] .ARM.exidx        ARM_EXIDX       00002090 002090 0001a0 08  AL 12   0  4
  [14] .ARM.extab        PROGBITS        00002230 002230 000198 00   A  0   0  4
  [15] .rodata           PROGBITS        000023c8 0023c8 00048e 01 AMS  0   0  1
  [16] .fini_array       FINI_ARRAY      00003e3c 002e3c 000008 00  WA  0   0  4
  [17] .data.rel.ro      PROGBITS        00003e44 002e44 000048 00  WA  0   0  4
  [18] .dynamic          DYNAMIC         00003e8c 002e8c 000118 08  WA  4   0  4
  [19] .got              PROGBITS        00003fa4 002fa4 00005c 00  WA  0   0  4
  [20] .data             PROGBITS        00004000 003000 000008 00  WA  0   0  4
  [21] .bss              NOBITS          00004008 003008 000001 00  WA  0   0  1
  [22] .comment          PROGBITS        00000000 003008 000108 01  MS  0   0  1
  [23] .debug_str        PROGBITS        00000000 003110 008369 01  MS  0   0  1
  [24] .debug_abbrev     PROGBITS        00000000 00b479 000b09 00      0   0  1
  [25] .debug_info       PROGBITS        00000000 00bf82 009860 00      0   0  1
  [26] .debug_ranges     PROGBITS        00000000 0157e2 0003d0 00      0   0  1
  [27] .debug_macinfo    PROGBITS        00000000 015bb2 000003 00      0   0  1
  [28] .debug_pubnames   PROGBITS        00000000 015bb5 001479 00      0   0  1
  [29] .debug_pubtypes   PROGBITS        00000000 01702e 000e7c 00      0   0  1
  [30] .debug_frame      PROGBITS        00000000 017eac 0006ec 00      0   0  4
  [31] .debug_line       PROGBITS        00000000 018598 001e0d 00      0   0  1
  [32] .debug_loc        PROGBITS        00000000 01a3a5 002028 00      0   0  1
  [33] .debug_aranges    PROGBITS        00000000 01c3cd 000040 00      0   0  1
  [34] .note.gnu.gold-ve NOTE            00000000 01c410 00001c 00      0   0  4
  [35] .ARM.attributes   ARM_ATTRIBUTES  00000000 01c42c 000034 00      0   0  1
  [36] .symtab           SYMTAB          00000000 01c460 006b30 10     37 1693  4
  [37] .strtab           STRTAB          00000000 022f90 00118b 00      0   0  1
  [38] .shstrtab         STRTAB          00000000 02411b 0001b0 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
  L (link order), O (extra OS processing required), G (group), T (TLS),
  C (compressed), x (unknown), o (OS specific), E (exclude),
  y (noread), p (processor specific)

There are no section groups in this file.

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  PHDR           0x000034 0x00000034 0x00000034 0x00100 0x00100 R   0x4
  LOAD           0x000000 0x00000000 0x00000000 0x02856 0x02856 R E 0x1000
  LOAD           0x002e3c 0x00003e3c 0x00003e3c 0x001cc 0x001cd RW  0x1000
  DYNAMIC        0x002e8c 0x00003e8c 0x00003e8c 0x00118 0x00118 RW  0x4
  NOTE           0x000134 0x00000134 0x00000134 0x000bc 0x000bc R   0x4
  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x10
  EXIDX          0x002090 0x00002090 0x00002090 0x001a0 0x001a0 R   0x4
  GNU_RELRO      0x002e3c 0x00003e3c 0x00003e3c 0x001c4 0x001c4 RW  0x4

 Section to Segment mapping:
  Segment Sections...
   00
   01     .note.android.ident .note.gnu.build-id .dynsym .dynstr .hash .gnu.version .gnu.version_d .gnu.version_r .rel.dyn .rel.plt .plt .text .ARM.exidx .ARM.extab .rodata
   02     .fini_array .data.rel.ro .dynamic .got .data .bss
   03     .dynamic
   04     .note.android.ident .note.gnu.build-id
   05
   06     .ARM.exidx
   07     .fini_array .data.rel.ro .dynamic .got

Dynamic section at offset 0x2e8c contains 30 entries:
  Tag        Type                         Name/Value
 0x00000003 (PLTGOT)                     0x3fb8
 0x00000002 (PLTRELSZ)                   120 (bytes)
 0x00000017 (JMPREL)                     0x7b4
 0x00000014 (PLTREL)                     REL
 0x00000011 (REL)                        0x6ec
 0x00000012 (RELSZ)                      200 (bytes)
 0x00000013 (RELENT)                     8 (bytes)
 0x6ffffffa (RELCOUNT)                   23
 0x00000006 (SYMTAB)                     0x1f0
 0x0000000b (SYMENT)                     16 (bytes)
 0x00000005 (STRTAB)                     0x360
 0x0000000a (STRSZ)                      600 (bytes)
 0x00000004 (HASH)                       0x5b8
 0x00000001 (NEEDED)                     Shared library: [liblog.so]
 0x00000001 (NEEDED)                     Shared library: [../../../../src/main/jniLibs/armeabi-v7a/libjudgehdr.so]
 0x00000001 (NEEDED)                     Shared library: [../../../../src/main/jniLibs/armeabi-v7a/libldr2hdr.so]
 0x00000001 (NEEDED)                     Shared library: [libm.so]
 0x00000001 (NEEDED)                     Shared library: [libdl.so]
 0x00000001 (NEEDED)                     Shared library: [libc.so]
 0x0000000e (SONAME)                     Library soname: [libcvteresearch_facehdr.so]
 0x0000001a (FINI_ARRAY)                 0x3e3c
 0x0000001c (FINI_ARRAYSZ)               8 (bytes)
 0x0000001e (FLAGS)                      BIND_NOW
 0x6ffffffb (FLAGS_1)                    Flags: NOW
 0x6ffffff0 (VERSYM)                     0x660
 0x6ffffffc (VERDEF)                     0x690
 0x6ffffffd (VERDEFNUM)                  1
 0x6ffffffe (VERNEED)                    0x6ac
 0x6fffffff (VERNEEDNUM)                 2
 0x00000000 (NULL)                       0x0

Relocation section '.rel.dyn' at offset 0x6ec contains 25 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
00003e3c  00000017 R_ARM_RELATIVE
00003e40  00000017 R_ARM_RELATIVE
00003e4c  00000017 R_ARM_RELATIVE
00003e50  00000017 R_ARM_RELATIVE
00003e54  00000017 R_ARM_RELATIVE
00003e58  00000017 R_ARM_RELATIVE
00003e5c  00000017 R_ARM_RELATIVE
00003e60  00000017 R_ARM_RELATIVE
00003e64  00000017 R_ARM_RELATIVE
00003e68  00000017 R_ARM_RELATIVE
00003e6c  00000017 R_ARM_RELATIVE
00003e70  00000017 R_ARM_RELATIVE
00003e74  00000017 R_ARM_RELATIVE
00003e78  00000017 R_ARM_RELATIVE
00003e7c  00000017 R_ARM_RELATIVE
00003e80  00000017 R_ARM_RELATIVE
00003e84  00000017 R_ARM_RELATIVE
00003e88  00000017 R_ARM_RELATIVE
00003fac  00000017 R_ARM_RELATIVE
00003fb0  00000017 R_ARM_RELATIVE
00003fb4  00000017 R_ARM_RELATIVE
00004000  00000017 R_ARM_RELATIVE
00004004  00000017 R_ARM_RELATIVE
00003fa8  00000c15 R_ARM_GLOB_DAT    00000000   __sF@LIBC
00003fa4  00000f15 R_ARM_GLOB_DAT    00000000   __stack_chk_guard@LIBC

Relocation section '.rel.plt' at offset 0x7b4 contains 15 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
00003fc4  00000216 R_ARM_JUMP_SLOT   00000000   __cxa_finalize@LIBC
00003fc8  00000116 R_ARM_JUMP_SLOT   00000000   __cxa_atexit@LIBC
00003fcc  00000916 R_ARM_JUMP_SLOT   000009a1   _ZN7_JNIEnv20GetByteAr
00003fd0  00000816 R_ARM_JUMP_SLOT   00000000   JudgeHdr
00003fd4  00000a16 R_ARM_JUMP_SLOT   000009d7   _ZN7_JNIEnv24ReleaseBy
00003fd8  00000b16 R_ARM_JUMP_SLOT   00000000   ldr2hdr
00003fdc  00000e16 R_ARM_JUMP_SLOT   00000000   __stack_chk_fail@LIBC
00003fe0  00001116 R_ARM_JUMP_SLOT   00000000   fprintf@LIBC
00003fe4  00001016 R_ARM_JUMP_SLOT   00000000   fflush@LIBC
00003fe8  00000d16 R_ARM_JUMP_SLOT   00000000   abort@LIBC
00003fec  00001316 R_ARM_JUMP_SLOT   00000000   __aeabi_memcpy
00003ff0  00001216 R_ARM_JUMP_SLOT   00000000   __aeabi_memclr8
00003ff4  00001516 R_ARM_JUMP_SLOT   00000000   dladdr@LIBC
00003ff8  00001616 R_ARM_JUMP_SLOT   00000000   snprintf@LIBC
00003ffc  00001416 R_ARM_JUMP_SLOT   00000000   __gnu_Unwind_Find_exid

Unwind table index '.ARM.exidx' at offset 0x2090 contains 52 entries:

0x8f4 <__on_dlclose>: 0x1 [cantunwind]

0x938 <Java_org_cvte_research_faceapi_FaceApiNative_JniJudgeHdr>: @0x2230
  Compact model index: 1
  0x97      vsp = r7
  0x43      vsp = vsp - 16
  0x80 0x10 pop {r8}
  0xab      pop {r4, r5, r6, r7, r14}
  0xb0      finish

0x9a0 <_ZN7_JNIEnv20GetByteArrayElementsEP11_jbyteArrayPh>: @0x223c
  Compact model index: 1
  0x97      vsp = r7
  0x41      vsp = vsp - 8
  0x84 0x0d pop {r4, r6, r7, r14}
  0xb0      finish
  0xb0      finish

...

0x1bf0 <_ZN9libunwind13Registers_arm15getRegisterNameEi>: 0x80b0b0b0
  Compact model index: 0
  0xb0      finish
  0xb0      finish
  0xb0      finish

0x2034 <_ZN9libunwind13Registers_arm20restoreCoreAndJumpToEv>: 0x1 [cantunwind]


Symbol table '.dynsym' contains 23 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 00000000     0 FUNC    GLOBAL DEFAULT  UND __cxa_atexit@LIBC (2)
     2: 00000000     0 FUNC    GLOBAL DEFAULT  UND __cxa_finalize@LIBC (2)
     3: 00004008     0 NOTYPE  GLOBAL DEFAULT  ABS _edata
     4: 00004009     0 NOTYPE  GLOBAL DEFAULT  ABS _end
     5: 00004008     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
     6: 00000939   104 FUNC    GLOBAL DEFAULT   12 Java_org_cvte_research_fa
     7: 00000a1f   142 FUNC    GLOBAL DEFAULT   12 Java_org_cvte_research_fa
     8: 00000000     0 FUNC    GLOBAL DEFAULT  UND JudgeHdr
     9: 000009a1    54 FUNC    WEAK   DEFAULT   12 _ZN7_JNIEnv20GetByteArray
    10: 000009d7    72 FUNC    WEAK   DEFAULT   12 _ZN7_JNIEnv24ReleaseByteA
    11: 00000000     0 FUNC    GLOBAL DEFAULT  UND ldr2hdr
    12: 00000000     0 OBJECT  GLOBAL DEFAULT  UND __sF@LIBC (2)
    13: 00000000     0 FUNC    GLOBAL DEFAULT  UND abort@LIBC (2)
    14: 00000000     0 FUNC    GLOBAL DEFAULT  UND __stack_chk_fail@LIBC (2)
    15: 00000000     0 OBJECT  GLOBAL DEFAULT  UND __stack_chk_guard@LIBC (2)
    16: 00000000     0 FUNC    GLOBAL DEFAULT  UND fflush@LIBC (2)
    17: 00000000     0 FUNC    GLOBAL DEFAULT  UND fprintf@LIBC (2)
    18: 00000000     0 FUNC    GLOBAL DEFAULT  UND __aeabi_memclr8
    19: 00000000     0 FUNC    GLOBAL DEFAULT  UND __aeabi_memcpy
    20: 00000000     0 FUNC    GLOBAL DEFAULT  UND __gnu_Unwind_Find_exidx
    21: 00000000     0 FUNC    GLOBAL DEFAULT  UND dladdr@LIBC (3)
    22: 00000000     0 FUNC    GLOBAL DEFAULT  UND snprintf@LIBC (2)

Symbol table '.symtab' contains 1715 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 00000000     0 FILE    LOCAL  DEFAULT  ABS crtbegin_so.c
     2: 000008f4     0 NOTYPE  LOCAL  DEFAULT   12 $a.0
     3: 00000904     0 NOTYPE  LOCAL  DEFAULT   12 $a.2
     4: 00000900     0 NOTYPE  LOCAL  DEFAULT   12 $d.1
     5: 00000930     0 NOTYPE  LOCAL  DEFAULT   12 $d.3

     ...

  1712: 00000000     0 FUNC    GLOBAL DEFAULT  UND __gnu_Unwind_Find_exidx
  1713: 00000000     0 FUNC    GLOBAL DEFAULT  UND dladdr
  1714: 00000000     0 FUNC    GLOBAL DEFAULT  UND snprintf

Histogram for bucket list length (total of 17 buckets):
 Length  Number     % of total  Coverage
      0  10         ( 58.8%)
      1  5          ( 29.4%)     55.6%
      2  2          ( 11.8%)    100.0%

Version symbols section '.gnu.version' contains 23 entries:
 Addr: 0000000000000660  Offset: 0x000660  Link: 3 (.dynsym)
  000:   0 (*local*)       2 (LIBC)          2 (LIBC)          1 (*global*)
  004:   1 (*global*)      1 (*global*)      1 (*global*)      1 (*global*)
  008:   0 (*local*)       1 (*global*)      1 (*global*)      0 (*local*)
  00c:   2 (LIBC)          2 (LIBC)          2 (LIBC)          2 (LIBC)
  010:   2 (LIBC)          2 (LIBC)          0 (*local*)       0 (*local*)
  014:   0 (*local*)       3 (LIBC)          2 (LIBC)

Version definition section '.gnu.version_d' contains 1 entries:
  Addr: 0x0000000000000690  Offset: 0x000690  Link: 4 (.dynstr)  000000: Rev: 1  Flags: BASE   Index: 1  Cnt: 1  Name: libcvteresearch_facehdr.so
  Version definition past end of section

Version needs section '.gnu.version_r' contains 2 entries:
 Addr: 0x00000000000006ac  Offset: 0x0006ac  Link: 4 (.dynstr)
  000000: Version: 1  File: libc.so  Cnt: 1
  0x0010:   Name: LIBC  Flags: none  Version: 2
  0x0020: Version: 1  File: libdl.so  Cnt: 1
  0x0030:   Name: LIBC  Flags: none  Version: 3

Displaying notes found at file offset 0x00000134 with length 0x00000098:
  Owner                 Data size       Description
  Android              0x00000084       NT_VERSION (version)

Displaying notes found at file offset 0x000001cc with length 0x00000024:
  Owner                 Data size       Description
  GNU                  0x00000014       NT_GNU_BUILD_ID (unique build ID bitstring)
    Build ID: 295b5876f2176311314bd316c97325d34d7a33ee

Displaying notes found at file offset 0x0001c410 with length 0x0000001c:
  Owner                 Data size       Description
  GNU                  0x00000009       NT_GNU_GOLD_VERSION (gold version)
    Version: gold 1.12
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "ARM v7"
  Tag_CPU_arch: v7
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_FP_arch: VFPv3
  Tag_ABI_PCS_GOT_use: GOT-indirect
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_enum_size: int
  Tag_CPU_unaligned_access: v6
  Tag_ABI_FP_16bit_format: IEEE 754

猜你喜欢

转载自blog.csdn.net/wilson1068/article/details/87867127
今日推荐