objdump用法举例
- 输入文件:ELF格式的
libtacker.so
用objdump读取解析ELF的libtacker.so
的效果:
-a:显示存档文件头信息
➜ arm64-v8a objdump -a libtacker.so
libtacker.so: file format elf64-littleaarch64
-f:显示全部文件头信息
➜ arm64-v8a objdump -f libtacker.so
libtacker.so: file format elf64-littleaarch64
architecture: aarch64
start address: 0x000000000001a5c0
-h:显示节的头信息
➜ arm64-v8a objdump -h libtacker.so
libtacker.so: file format elf64-littleaarch64
Sections:
Idx Name Size VMA Type
0 00000000 0000000000000000
1 .note.android.ident 00000098 0000000000000238
2 .note.gnu.build-id 00000024 00000000000002d0
3 .dynsym 00000b10 00000000000002f8
4 .gnu.version 000000ec 0000000000000e08
5 .gnu.version_r 00000040 0000000000000ef4
6 .gnu.hash 000001ec 0000000000000f38
7 .hash 000003b8 0000000000001124
8 .dynstr 00000c19 00000000000014dc
9 .rela.dyn 00008850 00000000000020f8
10 .rela.plt 00000450 000000000000a948
11 .gcc_except_table 00001960 000000000000ad98 DATA
12 .rodata 00003434 000000000000c6f8 DATA
13 .eh_frame_hdr 00001dbc 000000000000fb2c DATA
14 .eh_frame 00008cd4 00000000000118e8 DATA
15 .text 000aec60 000000000001a5c0 TEXT
16 .plt 00000300 00000000000c9220 TEXT
17 .data.rel.ro 00002eb8 00000000000ca520 DATA
18 .fini_array 00000010 00000000000cd3d8
19 .init_array 00000230 00000000000cd3e8
20 .dynamic 000001d0 00000000000cd618
21 .got 000000c0 00000000000cd7e8 DATA
22 .got.plt 00000188 00000000000cd8a8 DATA
23 .data 000025d8 00000000000cea30 DATA
24 .bss 00000ad0 00000000000d1010 BSS
25 .comment 000000c6 0000000000000000
26 .shstrtab 00000104 0000000000000000
-x:显示全部头信息
➜ arm64-v8a objdump -x libtacker.so
libtacker.so: file format elf64-littleaarch64
architecture: aarch64
start address: 0x000000000001a5c0
Program Header:
PHDR off 0x0000000000000040 vaddr 0x0000000000000040 paddr 0x0000000000000040 align 2**3
filesz 0x00000000000001f8 memsz 0x00000000000001f8 flags r--
LOAD off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**12
filesz 0x00000000000c9520 memsz 0x00000000000c9520 flags r-x
LOAD off 0x00000000000c9520 vaddr 0x00000000000ca520 paddr 0x00000000000ca520 align 2**12
filesz 0x0000000000003510 memsz 0x0000000000003510 flags rw-
LOAD off 0x00000000000cca30 vaddr 0x00000000000cea30 paddr 0x00000000000cea30 align 2**12
filesz 0x00000000000025d8 memsz 0x00000000000030b0 flags rw-
DYNAMIC off 0x00000000000cc618 vaddr 0x00000000000cd618 paddr 0x00000000000cd618 align 2**3
filesz 0x00000000000001d0 memsz 0x00000000000001d0 flags rw-
RELRO off 0x00000000000c9520 vaddr 0x00000000000ca520 paddr 0x00000000000ca520 align 2**0
filesz 0x0000000000003510 memsz 0x0000000000003ae0 flags r--
EH_FRAME off 0x000000000000fb2c vaddr 0x000000000000fb2c paddr 0x000000000000fb2c align 2**2
filesz 0x0000000000001dbc memsz 0x0000000000001dbc flags r--
STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**64
filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw-
NOTE off 0x0000000000000238 vaddr 0x0000000000000238 paddr 0x0000000000000238 align 2**2
filesz 0x00000000000000bc memsz 0x00000000000000bc flags r--
Dynamic Section:
NEEDED liblog.so
NEEDED libm.so
NEEDED libdl.so
NEEDED libc.so
SONAME libforce.so
FLAGS 0x0000000000000008
FLAGS_1 0x0000000000000001
RELA 0x00000000000020f8
RELASZ 0x0000000000008850
RELAENT 0x0000000000000018
RELACOUNT 0x0000000000000568
JMPREL 0x000000000000a948
PLTRELSZ 0x0000000000000450
PLTGOT 0x00000000000cd8a8
PLTREL 0x0000000000000007
SYMTAB 0x00000000000002f8
SYMENT 0x0000000000000018
STRTAB 0x00000000000014dc
STRSZ 0x0000000000000c19
GNU_HASH 0x0000000000000f38
HASH 0x0000000000001124
INIT_ARRAY 0x00000000000cd3e8
INIT_ARRAYSZ 0x0000000000000230
FINI_ARRAY 0x00000000000cd3d8
FINI_ARRAYSZ 0x0000000000000010
VERSYM 0x0000000000000e08
VERNEED 0x0000000000000ef4
VERNEEDNUM 0x0000000000000002
Version References:
required from libdl.so:
0x00050d63 0x00 03 LIBC
required from libc.so:
0x00050d63 0x00 02 LIBC
Sections:
Idx Name Size VMA Type
0 00000000 0000000000000000
1 .note.android.ident 00000098 0000000000000238
2 .note.gnu.build-id 00000024 00000000000002d0
3 .dynsym 00000b10 00000000000002f8
4 .gnu.version 000000ec 0000000000000e08
5 .gnu.version_r 00000040 0000000000000ef4
6 .gnu.hash 000001ec 0000000000000f38
7 .hash 000003b8 0000000000001124
8 .dynstr 00000c19 00000000000014dc
9 .rela.dyn 00008850 00000000000020f8
10 .rela.plt 00000450 000000000000a948
11 .gcc_except_table 00001960 000000000000ad98 DATA
12 .rodata 00003434 000000000000c6f8 DATA
13 .eh_frame_hdr 00001dbc 000000000000fb2c DATA
14 .eh_frame 00008cd4 00000000000118e8 DATA
15 .text 000aec60 000000000001a5c0 TEXT
16 .plt 00000300 00000000000c9220 TEXT
17 .data.rel.ro 00002eb8 00000000000ca520 DATA
18 .fini_array 00000010 00000000000cd3d8
19 .init_array 00000230 00000000000cd3e8
20 .dynamic 000001d0 00000000000cd618
21 .got 000000c0 00000000000cd7e8 DATA
22 .got.plt 00000188 00000000000cd8a8 DATA
23 .data 000025d8 00000000000cea30 DATA
24 .bss 00000ad0 00000000000d1010 BSS
25 .comment 000000c6 0000000000000000
26 .shstrtab 00000104 0000000000000000
SYMBOL TABLE:
-d:反汇编可执行指令的内容
text段反汇编
相关参数:
-d
--disassemble
--disassemble=symbol
Display the assembler mnemonics for the machine instructions
from the input file. This option only disassembles those
sections which are expected to contain instructions. If the
optional symbol argument is given, then display the assembler
mnemonics starting at symbol. If symbol is a function name
then disassembly will stop at the end of the function,
otherwise it will stop when the next symbol is encountered.
If there are no matches for symbol then nothing will be
displayed.
Note if the --dwarf=follow-links option is enabled then any
symbol tables in linked debug info files will be read in and
used when disassembling.
-j name
--section=name
Display information only for section name.
->
➜ arm64-v8a objdump -d -j .text libtacker.so
...
c8e54: 60 ca 00 39 strb w0, [x19, #50]
c8e58: e8 02 40 39 ldrb w8, [x23]
c8e5c: 1f e9 01 71 cmp w8, #122
c8e60: 80 01 00 54 b.eq 0xc8e90 <.datadiv_decode2444497212690810360+0x1e4bc>
c8e64: 44 00 00 14 b 0xc8f74 <.datadiv_decode2444497212690810360+0x1e5a0>
c8e68: 20 fa ff 90 adrp x0, 0xc000 <.datadiv_decode2444497212690810360+0x1e1a4>
c8e6c: 00 ec 3d 91 add x0, x0, #3963
c8e70: 46 00 00 14 b 0xc8f88 <.datadiv_decode2444497212690810360+0x1e5b4>
c8e74: a0 63 00 91 add x0, x29, #24
c8e78: e1 03 16 aa mov x1, x22
c8e7c: b5 fa ff 97 bl 0xc7950 <.datadiv_decode2444497212690810360+0x1cf7c>
c8e80: 60 ca 00 39 strb w0, [x19, #50]
c8e84: e8 02 40 39 ldrb w8, [x23]
c8e88: 1f e9 01 71 cmp w8, #122
c8e8c: 41 07 00 54 b.ne 0xc8f74 <.datadiv_decode2444497212690810360+0x1e5a0>
c8e90: a0 63 00 91 add x0, x29, #24
c8e94: e1 03 16 aa mov x1, x22
c8e98: ae fa ff 97 bl 0xc7950 <.datadiv_decode2444497212690810360+0x1cf7c>
c8e9c: 38 fa ff f0 adrp x24, 0xf000 <.datadiv_decode2444497212690810360+0x1e1e4>
c8ea0: 18 73 25 91 add x24, x24, #2396
c8ea4: 39 00 80 52 mov w25, #1
c8ea8: 05 00 00 14 b 0xc8ebc <.datadiv_decode2444497212690810360+0x1e4e8>
c8eac: 9f 24 03 d5 hint #36
c8eb0: 79 ce 00 39 strb w25, [x19, #51]
c8eb4: 9f 24 03 d5 hint #36
c8eb8: f7 06 00 91 add x23, x23, #1
...
c9174: 10 7c 40 f9 ldr x16, [x0, #248]
c9178: 00 04 40 a9 ldp x0, x1, [x0]
c917c: 1f 02 00 91 mov sp, x16
c9180: c0 03 5f d6 ret
c9184: 5f 24 03 d5 hint #34
c9188: 00 04 00 a9 stp x0, x1, [x0]
c918c: 02 0c 01 a9 stp x2, x3, [x0, #16]
c9190: 04 14 02 a9 stp x4, x5, [x0, #32]
c9194: 06 1c 03 a9 stp x6, x7, [x0, #48]
c9198: 08 24 04 a9 stp x8, x9, [x0, #64]
c919c: 0a 2c 05 a9 stp x10, x11, [x0, #80]
c91a0: 0c 34 06 a9 stp x12, x13, [x0, #96]
c91a4: 0e 3c 07 a9 stp x14, x15, [x0, #112]
c91a8: 10 44 08 a9 stp x16, x17, [x0, #128]
c91ac: 12 4c 09 a9 stp x18, x19, [x0, #144]
c91b0: 14 54 0a a9 stp x20, x21, [x0, #160]
c91b4: 16 5c 0b a9 stp x22, x23, [x0, #176]
c91b8: 18 64 0c a9 stp x24, x25, [x0, #192]
c91bc: 1a 6c 0d a9 stp x26, x27, [x0, #208]
c91c0: 1c 74 0e a9 stp x28, x29, [x0, #224]
c91c4: 1e 78 00 f9 str x30, [x0, #240]
c91c8: e1 03 00 91 mov x1, sp
c91cc: 01 7c 00 f9 str x1, [x0, #248]
c91d0: 1e 80 00 f9 str x30, [x0, #256]
c91d4: 00 04 11 6d stp d0, d1, [x0, #272]
c91d8: 02 0c 12 6d stp d2, d3, [x0, #288]
c91dc: 04 14 13 6d stp d4, d5, [x0, #304]
c91e0: 06 1c 14 6d stp d6, d7, [x0, #320]
c91e4: 08 24 15 6d stp d8, d9, [x0, #336]
c91e8: 0a 2c 16 6d stp d10, d11, [x0, #352]
c91ec: 0c 34 17 6d stp d12, d13, [x0, #368]
c91f0: 0e 3c 18 6d stp d14, d15, [x0, #384]
c91f4: 10 44 19 6d stp d16, d17, [x0, #400]
c91f8: 12 4c 1a 6d stp d18, d19, [x0, #416]
c91fc: 14 54 1b 6d stp d20, d21, [x0, #432]
c9200: 16 5c 1c 6d stp d22, d23, [x0, #448]
c9204: 18 64 1d 6d stp d24, d25, [x0, #464]
c9208: 1a 6c 1e 6d stp d26, d27, [x0, #480]
c920c: 1c 74 1f 6d stp d28, d29, [x0, #496]
c9210: 1e 00 01 fd str d30, [x0, #512]
c9214: 1f 04 01 fd str d31, [x0, #520]
c9218: 00 00 80 d2 mov x0, #0
c921c: c0 03 5f d6 ret
内容太多了。
看来是把全部的汇编都反编译了。
reloc段反汇编
相关参数:
-d
--disassemble
--disassemble=symbol
Display the assembler mnemonics for the machine instructions
from the input file. This option only disassembles those
sections which are expected to contain instructions. If the
optional symbol argument is given, then display the assembler
mnemonics starting at symbol. If symbol is a function name
then disassembly will stop at the end of the function,
otherwise it will stop when the next symbol is encountered.
If there are no matches for symbol then nothing will be
displayed.
Note if the --dwarf=follow-links option is enabled then any
symbol tables in linked debug info files will be read in and
used when disassembling.
-r
--reloc
Print the relocation entries of the file. If used with -d or
-D, the relocations are printed interspersed with the
disassembly.
->
➜ arm64-v8a objdump -d -r libtacker.so > libtacker_objdump_d_r.coffee
libtacker.so: file format elf64-littleaarch64
Disassembly of section .text:
000000000001a5c0 <.text>:
1a5c0: 5f 24 03 d5 hint #34
1a5c4: 80 05 00 90 adrp x0, 0xca000 <.text+0x2c4>
1a5c8: 00 80 14 91 add x0, x0, #1312
1a5cc: 1d bb 02 14 b 0xc9240 <__cxa_finalize@plt>
1a5d0: 5f 24 03 d5 hint #34
1a5d4: c0 03 5f d6 ret
1a5d8: 5f 24 03 d5 hint #34
1a5dc: ac a9 02 14 b 0xc4c8c <.datadiv_decode2444497212690810360+0x1a2b8>
1a5e0: 5f 24 03 d5 hint #34
1a5e4: 60 00 00 b4 cbz x0, 0x1a5f0 <.text+0x30>
1a5e8: f0 03 00 aa mov x16, x0
1a5ec: 00 02 1f d6 br x16
1a5f0: c0 03 5f d6 ret
1a5f4: 5f 24 03 d5 hint #34
1a5f8: 08 00 00 90 adrp x8, 0x1a000 <.text+0x38>
1a5fc: 08 81 17 91 add x8, x8, #1504
1a600: 82 05 00 90 adrp x2, 0xca000 <.text+0x300>
1a604: 42 80 14 91 add x2, x2, #1312
...
2e11c: 08 b6 b3 72 movk w8, #40368, lsl #16
2e120: 1f 01 17 6b cmp w8, w23
2e124: 60 01 00 54 b.eq 0x2e150 <.datadiv_decode17838636323198310142+0x2820>
2e128: 1f 01 16 6b cmp w8, w22
2e12c: a1 ff ff 54 b.ne 0x2e120 <.datadiv_decode17838636323198310142+0x27f0>
2e130: e0 03 14 aa mov x0, x20
2e134: e1 03 13 aa mov x1, x19
2e138: e2 03 15 2a mov w2, w21
2e13c: e3 03 1f 2a mov w3, wzr
2e140: 03 08 00 94 bl 0x3014c <.datadiv_decode8952246851265070369+0x6b4>
2e144: 28 95 94 52 mov w8, #42153
2e148: a8 a2 a4 72 movk w8, #9493, lsl #16
2e14c: f5 ff ff 17 b 0x2e120 <.datadiv_decode17838636323198310142+0x27f0>
2e150: f4 4f 43 a9 ldp x20, x19, [sp, #48]
2e154: f6 57 42 a9 ldp x22, x21, [sp, #32]
2e158: f7 0b 40 f9 ldr x23, [sp, #16]
2e15c: fd 7b c4 a8 ldp x29, x30, [sp], #64
2e160: c0 03 5f d6 ret
2e164: ff 43 01 d1 sub sp, sp, #80
2e168: fd 7b 02 a9 stp x29, x30, [sp, #32]
2e16c: fd 83 00 91 add x29, sp, #32
...
000000000002e2bc <.datadiv_decode18328417529454547004>:
2e2bc: fd 7b ba a9 stp x29, x30, [sp, #-96]!
2e2c0: fc 6f 01 a9 stp x28, x27, [sp, #16]
2e2c4: fa 67 02 a9 stp x26, x25, [sp, #32]
2e2c8: f8 5f 03 a9 stp x24, x23, [sp, #48]
2e2cc: f6 57 04 a9 stp x22, x21, [sp, #64]
2e2d0: f4 4f 05 a9 stp x20, x19, [sp, #80]
2e2d4: 01 05 00 90 adrp x1, 0xce000 <.datadiv_decode18328417529454547004+0x298>
2e2d8: d1 0e 80 52 mov w17, #118
2e2dc: 21 c0 33 91 add x1, x1, #3312
2e2e0: 69 0b 80 52 mov w9, #91
2e2e4: 6f 0b 80 12 mov w15, #-92
2e2e8: a0 05 80 12 mov w0, #-46
2e2ec: d0 0e 80 12 mov w16, #-119
2e2f0: cd 02 80 52 mov w13, #22
2e2f4: 28 00 40 39 ldrb w8, [x1]
2e2f8: 85 0d 80 12 mov w5, #-109
2e2fc: 95 0d 80 52 mov w21, #108
2e300: 27 0e 80 52 mov w7, #113
2e304: 43 0f 80 52 mov w3, #122
2e308: 19 0d 80 52 mov w25, #104
2e30c: ea 03 28 2a mvn w10, w8
2e310: 0b 01 28 0a bic w11, w8, w8
2e314: 0c 05 1a 12 and w12, w8, #0xc0
...
c913c: 06 1c 54 6d ldp d6, d7, [x0, #320]
c9140: 08 24 55 6d ldp d8, d9, [x0, #336]
c9144: 0a 2c 56 6d ldp d10, d11, [x0, #352]
c9148: 0c 34 57 6d ldp d12, d13, [x0, #368]
c914c: 0e 3c 58 6d ldp d14, d15, [x0, #384]
c9150: 10 44 59 6d ldp d16, d17, [x0, #400]
c9154: 12 4c 5a 6d ldp d18, d19, [x0, #416]
c9158: 14 54 5b 6d ldp d20, d21, [x0, #432]
c915c: 16 5c 5c 6d ldp d22, d23, [x0, #448]
c9160: 18 64 5d 6d ldp d24, d25, [x0, #464]
c9164: 1a 6c 5e 6d ldp d26, d27, [x0, #480]
c9168: 1c 74 5f 6d ldp d28, d29, [x0, #496]
c916c: 1e 00 41 fd ldr d30, [x0, #512]
c9170: 1f 04 41 fd ldr d31, [x0, #520]
c9174: 10 7c 40 f9 ldr x16, [x0, #248]
c9178: 00 04 40 a9 ldp x0, x1, [x0]
c917c: 1f 02 00 91 mov sp, x16
c9180: c0 03 5f d6 ret
c9184: 5f 24 03 d5 hint #34
c9188: 00 04 00 a9 stp x0, x1, [x0]
c918c: 02 0c 01 a9 stp x2, x3, [x0, #16]
c9190: 04 14 02 a9 stp x4, x5, [x0, #32]
c9194: 06 1c 03 a9 stp x6, x7, [x0, #48]
c9198: 08 24 04 a9 stp x8, x9, [x0, #64]
c919c: 0a 2c 05 a9 stp x10, x11, [x0, #80]
c91a0: 0c 34 06 a9 stp x12, x13, [x0, #96]
c91a4: 0e 3c 07 a9 stp x14, x15, [x0, #112]
c91a8: 10 44 08 a9 stp x16, x17, [x0, #128]
c91ac: 12 4c 09 a9 stp x18, x19, [x0, #144]
c91b0: 14 54 0a a9 stp x20, x21, [x0, #160]
c91b4: 16 5c 0b a9 stp x22, x23, [x0, #176]
c91b8: 18 64 0c a9 stp x24, x25, [x0, #192]
c91bc: 1a 6c 0d a9 stp x26, x27, [x0, #208]
c91c0: 1c 74 0e a9 stp x28, x29, [x0, #224]
c91c4: 1e 78 00 f9 str x30, [x0, #240]
c91c8: e1 03 00 91 mov x1, sp
c91cc: 01 7c 00 f9 str x1, [x0, #248]
c91d0: 1e 80 00 f9 str x30, [x0, #256]
c91d4: 00 04 11 6d stp d0, d1, [x0, #272]
c91d8: 02 0c 12 6d stp d2, d3, [x0, #288]
c91dc: 04 14 13 6d stp d4, d5, [x0, #304]
c91e0: 06 1c 14 6d stp d6, d7, [x0, #320]
c91e4: 08 24 15 6d stp d8, d9, [x0, #336]
c91e8: 0a 2c 16 6d stp d10, d11, [x0, #352]
c91ec: 0c 34 17 6d stp d12, d13, [x0, #368]
c91f0: 0e 3c 18 6d stp d14, d15, [x0, #384]
c91f4: 10 44 19 6d stp d16, d17, [x0, #400]
c91f8: 12 4c 1a 6d stp d18, d19, [x0, #416]
c91fc: 14 54 1b 6d stp d20, d21, [x0, #432]
c9200: 16 5c 1c 6d stp d22, d23, [x0, #448]
c9204: 18 64 1d 6d stp d24, d25, [x0, #464]
c9208: 1a 6c 1e 6d stp d26, d27, [x0, #480]
c920c: 1c 74 1f 6d stp d28, d29, [x0, #496]
c9210: 1e 00 01 fd str d30, [x0, #512]
c9214: 1f 04 01 fd str d31, [x0, #520]
c9218: 00 00 80 d2 mov x0, #0
c921c: c0 03 5f d6 ret
Disassembly of section .plt:
00000000000c9220 <.plt>:
c9220: f0 7b bf a9 stp x16, x30, [sp, #-16]!
c9224: 30 00 00 90 adrp x16, 0xcd000 <.plt+0x14>
c9228: 11 5e 44 f9 ldr x17, [x16, #2232]
c922c: 10 e2 22 91 add x16, x16, #2232
c9230: 20 02 1f d6 br x17
c9234: 1f 20 03 d5 nop
c9238: 1f 20 03 d5 nop
c923c: 1f 20 03 d5 nop
00000000000c9240 <__cxa_finalize@plt>:
c9240: 30 00 00 90 adrp x16, 0xcd000 <__cxa_atexit@plt>
c9244: 11 62 44 f9 ldr x17, [x16, #2240]
c9248: 10 02 23 91 add x16, x16, #2240
c924c: 20 02 1f d6 br x17
...
00000000000c9370 <strlen@plt>:
c9370: 30 00 00 90 adrp x16, 0xcd000 <realloc@plt>
c9374: 11 ae 44 f9 ldr x17, [x16, #2392]
c9378: 10 62 25 91 add x16, x16, #2392
c937c: 20 02 1f d6 br x17
...
00000000000c9480 <getauxval@plt>:
c9480: 30 00 00 90 adrp x16, 0xcd000 <__system_property_get@plt>
c9484: 11 f2 44 f9 ldr x17, [x16, #2528]
c9488: 10 82 27 91 add x16, x16, #2528
c948c: 20 02 1f d6 br x17
00000000000c9490 <__system_property_get@plt>:
c9490: 30 00 00 90 adrp x16, 0xcd000 <strncmp@plt>
c9494: 11 f6 44 f9 ldr x17, [x16, #2536]
c9498: 10 a2 27 91 add x16, x16, #2536
c949c: 20 02 1f d6 br x17
00000000000c94a0 <strncmp@plt>:
c94a0: 30 00 00 90 adrp x16, 0xcd000 <fprintf@plt>
c94a4: 11 fa 44 f9 ldr x17, [x16, #2544]
c94a8: 10 c2 27 91 add x16, x16, #2544
c94ac: 20 02 1f d6 br x17
...
00000000000c94e0 <pthread_rwlock_unlock@plt>:
c94e0: 30 00 00 90 adrp x16, 0xcd000 <dl_iterate_phdr@plt>
c94e4: 11 0a 45 f9 ldr x17, [x16, #2576]
c94e8: 10 42 28 91 add x16, x16, #2576
c94ec: 20 02 1f d6 br x17
00000000000c94f0 <dl_iterate_phdr@plt>:
c94f0: 30 00 00 90 adrp x16, 0xcd000 <pthread_rwlock_rdlock@plt>
c94f4: 11 0e 45 f9 ldr x17, [x16, #2584]
c94f8: 10 62 28 91 add x16, x16, #2584
c94fc: 20 02 1f d6 br x17
00000000000c9500 <pthread_rwlock_rdlock@plt>:
c9500: 30 00 00 90 adrp x16, 0xcd000 <fwrite@plt>
c9504: 11 12 45 f9 ldr x17, [x16, #2592]
c9508: 10 82 28 91 add x16, x16, #2592
c950c: 20 02 1f d6 br x17
00000000000c9510 <fwrite@plt>:
c9510: 30 00 00 90 adrp x16, 0xcd000 <fwrite@plt+0x10>
c9514: 11 16 45 f9 ldr x17, [x16, #2600]
c9518: 10 a2 28 91 add x16, x16, #2600
c951c: 20 02 1f d6 br x17
-s:显示每个节的内容
➜ arm64-v8a objdump -s libtacker.so > libtacker_objdump_s.coffee
...
libtacker.so: file format elf64-littleaarch64
Contents of section .note.android.ident:
0238 08000000 84000000 01000000 416e6472 ............Andr
0248 6f696400 15000000 72323400 00000000 oid.....r24.....
0258 00000000 00000000 00000000 00000000 ................
0268 00000000 00000000 00000000 00000000 ................
0278 00000000 00000000 00000000 00000000 ................
0288 00000000 00000000 38323135 38383800 ........8215888.
0298 00000000 00000000 00000000 00000000 ................
02a8 00000000 00000000 00000000 00000000 ................
02b8 00000000 00000000 00000000 00000000 ................
02c8 00000000 00000000 ........
Contents of section .note.gnu.build-id:
02d0 04000000 14000000 03000000 474e5500 ............GNU.
02e0 3a269496 ef440c78 5356664f 89464681 :&...D.xSVfO.FF.
02f0 5d3c61ad ]<a.
Contents of section .dynsym:
02f8 00000000 00000000 00000000 00000000 ................
0308 00000000 00000000 01000000 12000000 ................
0318 00000000 00000000 00000000 00000000 ................
0328 10000000 12000000 00000000 00000000 ................
0338 00000000 00000000 1d000000 12000000 ................
0348 00000000 00000000 00000000 00000000 ................
。。。
d0f70 5a565416 5f564b5a 5c165849 49165550 ZVT._VKZ\.XII.UP
d0f80 5b167758 4d504f5c 715c5549 5c4b3900 [.wXMPO\q\UI\K9.
d0f90 a9cde0ef e5f3eee8 e5aee0f1 f1aec0f1 ................
d0fa0 f1ede8e2 e0f5e8ee efbaa8d7 81000000 ................
d0fb0 10000000 00000000 08000000 00000000 ................
d0fc0 00000000 00000000 00000000 00000000 ................
d0fd0 00000000 00000000 00000000 00000000 ................
d0fe0 00000000 00000000 00000000 00000000 ................
d0ff0 00000000 00000000 00000000 00000000 ................
d1000 00000000 00000000 ........
Contents of section .bss:
<skipping contents of bss section at [d1010, d1ae0)>
Contents of section .comment:
0000 4c696e6b 65723a20 4c4c4420 31342e30 Linker: LLD 14.0
0010 2e310063 6c616e67 20766572 73696f6e .1.clang version
0020 2031342e 302e3000 416e6472 6f696420 14.0.0.Android
0030 28383037 35313738 2c206261 73656420 (8075178, based
0040 6f6e2072 34333731 31326229 20636c61 on r437112b) cla
0050 6e672076 65727369 6f6e2031 342e302e ng version 14.0.
0060 31202868 74747073 3a2f2f61 6e64726f 1 (https://andro
0070 69642e67 6f6f676c 65736f75 7263652e id.googlesource.
0080 636f6d2f 746f6f6c 63686169 6e2f6c6c com/toolchain/ll
0090 766d2d70 726f6a65 63742038 36373133 vm-project 86713
00a0 34386238 31623935 66633630 33353035 48b81b95fc603505
00b0 64666338 38316234 35313033 62656531 dfc881b45103bee1
00c0 37333129 0000 731)..
Contents of section .shstrtab:
0000 002e696e 69745f61 72726179 002e6669 ..init_array..fi
0010 6e695f61 72726179 002e7465 7874002e ni_array..text..
0020 676f7400 2e636f6d 6d656e74 002e6e6f got..comment..no
0030 74652e61 6e64726f 69642e69 64656e74 te.android.ident
0040 002e676f 742e706c 74002e72 656c612e ..got.plt..rela.
0050 706c7400 2e627373 002e6479 6e737472 plt..bss..dynstr
0060 002e6568 5f667261 6d655f68 6472002e ..eh_frame_hdr..
0070 676e752e 76657273 696f6e5f 72002e64 gnu.version_r..d
0080 6174612e 72656c2e 726f002e 72656c61 ata.rel.ro..rela
0090 2e64796e 002e676e 752e7665 7273696f .dyn..gnu.versio
00a0 6e002e64 796e7379 6d002e67 6e752e68 n..dynsym..gnu.h
00b0 61736800 2e65685f 6672616d 65002e67 ash..eh_frame..g
00c0 63635f65 78636570 745f7461 626c6500 cc_except_table.
00d0 2e6e6f74 652e676e 752e6275 696c642d .note.gnu.build-
00e0 6964002e 64796e61 6d696300 2e736873 id..dynamic..shs
00f0 74727461 62002e72 6f646174 61002e64 trtab..rodata..d
0100 61746100 ata.
-t:显示符号表
➜ arm64-v8a objdump -t libtacker.so
libtacker.so: file format elf64-littleaarch64
SYMBOL TABLE:
-T:显示动态符号表
➜ arm64-v8a objdump -T libtacker.so
libtacker.so: file format elf64-littleaarch64
DYNAMIC SYMBOL TABLE:
0000000000000000 DF *UND* 0000000000000000 (LIBC) __cxa_finalize
0000000000000000 DF *UND* 0000000000000000 (LIBC) __cxa_atexit
0000000000000000 DF *UND* 0000000000000000 __android_log_print
0000000000000000 DF *UND* 0000000000000000 (LIBC) __stack_chk_fail
0000000000000000 DF *UND* 0000000000000000 (LIBC) memset
0000000000000000 DF *UND* 0000000000000000 (LIBC) strncpy
0000000000000000 DF *UND* 0000000000000000 (LIBC) strncat
0000000000000000 DF *UND* 0000000000000000 (LIBC) pthread_self
0000000000000000 DF *UND* 0000000000000000 (LIBC) malloc
0000000000000000 DF *UND* 0000000000000000 (LIBC) free
0000000000000000 DF *UND* 0000000000000000 (LIBC) posix_memalign
0000000000000000 DO *UND* 0000000000000000 (LIBC) __sF
0000000000000000 DF *UND* 0000000000000000 (LIBC) vfprintf
0000000000000000 DF *UND* 0000000000000000 (LIBC) fputc
0000000000000000 DF *UND* 0000000000000000 (LIBC) vasprintf
0000000000000000 DF *UND* 0000000000000000 (LIBC) android_set_abort_message
0000000000000000 DF *UND* 0000000000000000 (LIBC) openlog
0000000000000000 DF *UND* 0000000000000000 (LIBC) syslog
0000000000000000 DF *UND* 0000000000000000 (LIBC) closelog
0000000000000000 DF *UND* 0000000000000000 (LIBC) abort
0000000000000000 DF *UND* 0000000000000000 (LIBC) strlen
0000000000000000 DF *UND* 0000000000000000 (LIBC) realloc
0000000000000000 DF *UND* 0000000000000000 (LIBC) memmove
0000000000000000 DF *UND* 0000000000000000 (LIBC) __memmove_chk
0000000000000000 DF *UND* 0000000000000000 (LIBC) __strlen_chk
0000000000000000 DF *UND* 0000000000000000 (LIBC) memchr
0000000000000000 DF *UND* 0000000000000000 (LIBC) __vsnprintf_chk
0000000000000000 DF *UND* 0000000000000000 (LIBC) memcpy
0000000000000000 DF *UND* 0000000000000000 (LIBC) pthread_mutex_lock
0000000000000000 DF *UND* 0000000000000000 (LIBC) pthread_mutex_unlock
0000000000000000 DF *UND* 0000000000000000 (LIBC) calloc
0000000000000000 DF *UND* 0000000000000000 (LIBC) strcmp
0000000000000000 DF *UND* 0000000000000000 (LIBC) pthread_getspecific
0000000000000000 DF *UND* 0000000000000000 (LIBC) pthread_once
0000000000000000 DF *UND* 0000000000000000 (LIBC) pthread_setspecific
0000000000000000 DF *UND* 0000000000000000 (LIBC) pthread_key_delete
0000000000000000 DF *UND* 0000000000000000 (LIBC) pthread_key_create
0000000000000000 DF *UND* 0000000000000000 (LIBC) getauxval
0000000000000000 DF *UND* 0000000000000000 (LIBC) __system_property_get
0000000000000000 DF *UND* 0000000000000000 (LIBC) strncmp
0000000000000000 DF *UND* 0000000000000000 (LIBC) fprintf
0000000000000000 DF *UND* 0000000000000000 (LIBC) fflush
0000000000000000 DF *UND* 0000000000000000 (LIBC) pthread_rwlock_wrlock
0000000000000000 DF *UND* 0000000000000000 (LIBC) pthread_rwlock_unlock
0000000000000000 DF *UND* 0000000000000000 (LIBC) dl_iterate_phdr
0000000000000000 DF *UND* 0000000000000000 (LIBC) pthread_rwlock_rdlock
0000000000000000 DF *UND* 0000000000000000 (LIBC) fwrite
0000000000044ce8 g DF .text 00000000000019d0 .datadiv_decode16117807209816376729
0000000000078a04 g DF .text 0000000000000a88 .datadiv_decode9901940071257331957
00000000000a8a58 g DF .text 0000000000000f34 .datadiv_decode14716202181486223822
0000000000076128 g DF .text 0000000000000870 .datadiv_decode4891596974783633952
...
00000000000a8884 g DF .text 0000000000000004 .datadiv_decode11706101414295225912
00000000000aa438 g DF .text 000000000000059c JNI_OnLoad
0000000000026d98 g DF .text 00000000000048e0 .datadiv_decode12335027288954124723
...
000000000005c790 g DF .text 0000000000000004 .datadiv_decode1552205700074701063
000000000005ed50 g DF .text 00000000000018a0 .datadiv_decode15147620753704794795
00000000000a5e74 g DF .text 0000000000000004 .datadiv_decode5454406552017557296
-r:显示静态重定位入口
➜ arm64-v8a objdump -r libtacker.so
libtacker.so: file format elf64-littleaarch64
-R:显示动态重定位入口
➜ arm64-v8a objdump -R libtacker.so
...
00000000000cd858 R_AARCH64_RELATIVE *ABS*+0xcc650
00000000000cd860 R_AARCH64_RELATIVE *ABS*+0xf3b9
00000000000cd868 R_AARCH64_RELATIVE *ABS*+0xcc668
00000000000cd870 R_AARCH64_RELATIVE *ABS*+0xf3b0
00000000000cd878 R_AARCH64_RELATIVE *ABS*+0xcc680
00000000000cd880 R_AARCH64_RELATIVE *ABS*+0xcc698
00000000000cd888 R_AARCH64_RELATIVE *ABS*+0xcd1a8
00000000000cd890 R_AARCH64_RELATIVE *ABS*+0xcd1d0
00000000000cd898 R_AARCH64_RELATIVE *ABS*+0xcd2a0
00000000000cd8a0 R_AARCH64_RELATIVE *ABS*+0xcd2c8
00000000000cece8 R_AARCH64_RELATIVE *ABS*+0xc206c
00000000000d0fd0 R_AARCH64_RELATIVE *ABS*+0xacb9c
00000000000d0fd8 R_AARCH64_RELATIVE *ABS*+0xaccbc
00000000000d0fe0 R_AARCH64_RELATIVE *ABS*+0xd4a7
00000000000d0fe8 R_AARCH64_RELATIVE *ABS*+0xd12a1
00000000000d0ff0 R_AARCH64_RELATIVE *ABS*+0xd12e0
00000000000d0ff8 R_AARCH64_RELATIVE *ABS*+0xd12e0
00000000000d1000 R_AARCH64_RELATIVE *ABS*+0xd1ae0
00000000000cd828 R_AARCH64_GLOB_DAT __sF
00000000000cd460 R_AARCH64_ABS64 .datadiv_decode16117807209816376729
00000000000cd500 R_AARCH64_ABS64 .datadiv_decode9901940071257331957
00000000000cd5f8 R_AARCH64_ABS64 .datadiv_decode14716202181486223822
00000000000cd4e8 R_AARCH64_ABS64 .datadiv_decode4891596974783633952
00000000000cd570 R_AARCH64_ABS64 .datadiv_decode9339716730803528690
00000000000cd488 R_AARCH64_ABS64 .datadiv_decode13183548145838600894
00000000000cd490 R_AARCH64_ABS64 .datadiv_decode3525000441545555282
00000000000cd4a0 R_AARCH64_ABS64 .datadiv_decode8298916886736451040
00000000000cd4e0 R_AARCH64_ABS64 .datadiv_decode6610309240369344955
00000000000cd5b8 R_AARCH64_ABS64 .datadiv_decode5742785139195766122
00000000000cd410 R_AARCH64_ABS64 .datadiv_decode12946686905750037712
00000000000cd4c0 R_AARCH64_ABS64 .datadiv_decode12620377358555187834
00000000000cd520 R_AARCH64_ABS64 .datadiv_decode15294134973280561020
00000000000cd578 R_AARCH64_ABS64 .datadiv_decode123525175395121774
00000000000cd598 R_AARCH64_ABS64 .datadiv_decode17486258817593906496
00000000000cd470 R_AARCH64_ABS64 .datadiv_decode15789135661111847785
00000000000cd508 R_AARCH64_ABS64 .datadiv_decode9708024290202508361
00000000000cd550 R_AARCH64_ABS64 .datadiv_decode12389017544255092540
00000000000cd5a8 R_AARCH64_ABS64 .datadiv_decode8646520184225136992
00000000000cd528 R_AARCH64_ABS64 .datadiv_decode5555087159661513939
00000000000cd538 R_AARCH64_ABS64 .datadiv_decode18018071361702630102
00000000000cd548 R_AARCH64_ABS64 .datadiv_decode11327300974587163078
00000000000cd568 R_AARCH64_ABS64 .datadiv_decode13214095259256631718
00000000000cd428 R_AARCH64_ABS64 .datadiv_decode3631146530348700705
00000000000cd4d0 R_AARCH64_ABS64 .datadiv_decode8050698040297613930
00000000000cd5f0 R_AARCH64_ABS64 .datadiv_decode11706101414295225912
00000000000cd3e8 R_AARCH64_ABS64 .datadiv_decode12335027288954124723
00000000000cd418 R_AARCH64_ABS64 .datadiv_decode18261546535841772752
00000000000cd450 R_AARCH64_ABS64 .datadiv_decode5616837089396308971
00000000000cd4f8 R_AARCH64_ABS64 .datadiv_decode13827763977763901235
00000000000cd458 R_AARCH64_ABS64 .datadiv_decode14151120317447827231
00000000000cd480 R_AARCH64_ABS64 .datadiv_decode11770512853690929982
00000000000cd5c0 R_AARCH64_ABS64 .datadiv_decode14401673864441325462
00000000000cd400 R_AARCH64_ABS64 .datadiv_decode8952246851265070369
00000000000cd478 R_AARCH64_ABS64 .datadiv_decode5074647643595886391
00000000000cd4a8 R_AARCH64_ABS64 .datadiv_decode11553230420239584337
00000000000cd4d8 R_AARCH64_ABS64 .datadiv_decode11784788714666544642
00000000000cd4f0 R_AARCH64_ABS64 .datadiv_decode15357274442415173716
00000000000cd510 R_AARCH64_ABS64 .datadiv_decode16313801769778548889
00000000000cd580 R_AARCH64_ABS64 .datadiv_decode18380577887196024106
00000000000cd3f8 R_AARCH64_ABS64 .datadiv_decode18328417529454547004
00000000000cd518 R_AARCH64_ABS64 .datadiv_decode12121706469311219939
00000000000cd540 R_AARCH64_ABS64 .datadiv_decode4193671268968804409
00000000000cd5c8 R_AARCH64_ABS64 .datadiv_decode6405721680354649260
00000000000cd5e8 R_AARCH64_ABS64 .datadiv_decode8316381480288167535
00000000000cd468 R_AARCH64_ABS64 .datadiv_decode12672127785521407892
00000000000cd530 R_AARCH64_ABS64 .datadiv_decode1095597082262436137
00000000000cd558 R_AARCH64_ABS64 .datadiv_decode11689284992262612148
00000000000cd588 R_AARCH64_ABS64 .datadiv_decode17940233878698364930
00000000000cd448 R_AARCH64_ABS64 .datadiv_decode1771790552069125206
00000000000cd4c8 R_AARCH64_ABS64 .datadiv_decode12950792008805936966
00000000000cd560 R_AARCH64_ABS64 .datadiv_decode6931257938975476985
00000000000cd5a0 R_AARCH64_ABS64 .datadiv_decode15620942718649555403
00000000000cd600 R_AARCH64_ABS64 .datadiv_decode8758840755024801160
00000000000cd408 R_AARCH64_ABS64 .datadiv_decode8010288038339893607
00000000000cd4b8 R_AARCH64_ABS64 .datadiv_decode2175705720332001599
00000000000cd590 R_AARCH64_ABS64 .datadiv_decode256915654516018196
00000000000cd5b0 R_AARCH64_ABS64 .datadiv_decode16710377636940783008
00000000000cd5d0 R_AARCH64_ABS64 .datadiv_decode1639262728706781308
00000000000cd5e0 R_AARCH64_ABS64 .datadiv_decode5533236249192328355
00000000000cd608 R_AARCH64_ABS64 .datadiv_decode2444497212690810360
00000000000cd420 R_AARCH64_ABS64 .datadiv_decode15481956303235929690
00000000000cd438 R_AARCH64_ABS64 .datadiv_decode17677705362567080649
00000000000cd440 R_AARCH64_ABS64 .datadiv_decode7614718738418908679
00000000000cd3f0 R_AARCH64_ABS64 .datadiv_decode17838636323198310142
00000000000cd430 R_AARCH64_ABS64 .datadiv_decode17330405497468958994
00000000000cd498 R_AARCH64_ABS64 .datadiv_decode1552205700074701063
00000000000cd4b0 R_AARCH64_ABS64 .datadiv_decode15147620753704794795
00000000000cd5d8 R_AARCH64_ABS64 .datadiv_decode5454406552017557296
00000000000cd8c0 R_AARCH64_JUMP_SLOT __cxa_finalize
00000000000cd8c8 R_AARCH64_JUMP_SLOT __cxa_atexit
00000000000cd8d0 R_AARCH64_JUMP_SLOT __android_log_print
00000000000cd8d8 R_AARCH64_JUMP_SLOT __stack_chk_fail
00000000000cd8e0 R_AARCH64_JUMP_SLOT memset
00000000000cd8e8 R_AARCH64_JUMP_SLOT strncpy
00000000000cd8f0 R_AARCH64_JUMP_SLOT strncat
00000000000cd8f8 R_AARCH64_JUMP_SLOT pthread_self
00000000000cd900 R_AARCH64_JUMP_SLOT malloc
00000000000cd908 R_AARCH64_JUMP_SLOT free
00000000000cd910 R_AARCH64_JUMP_SLOT posix_memalign
00000000000cd918 R_AARCH64_JUMP_SLOT vfprintf
00000000000cd920 R_AARCH64_JUMP_SLOT fputc
00000000000cd928 R_AARCH64_JUMP_SLOT vasprintf
00000000000cd930 R_AARCH64_JUMP_SLOT android_set_abort_message
00000000000cd938 R_AARCH64_JUMP_SLOT openlog
00000000000cd940 R_AARCH64_JUMP_SLOT syslog
00000000000cd948 R_AARCH64_JUMP_SLOT closelog
00000000000cd950 R_AARCH64_JUMP_SLOT abort
00000000000cd958 R_AARCH64_JUMP_SLOT strlen
00000000000cd960 R_AARCH64_JUMP_SLOT realloc
00000000000cd968 R_AARCH64_JUMP_SLOT memmove
00000000000cd970 R_AARCH64_JUMP_SLOT __memmove_chk
00000000000cd978 R_AARCH64_JUMP_SLOT __strlen_chk
00000000000cd980 R_AARCH64_JUMP_SLOT memchr
00000000000cd988 R_AARCH64_JUMP_SLOT __vsnprintf_chk
00000000000cd990 R_AARCH64_JUMP_SLOT memcpy
00000000000cd998 R_AARCH64_JUMP_SLOT pthread_mutex_lock
00000000000cd9a0 R_AARCH64_JUMP_SLOT pthread_mutex_unlock
00000000000cd9a8 R_AARCH64_JUMP_SLOT calloc
00000000000cd9b0 R_AARCH64_JUMP_SLOT strcmp
00000000000cd9b8 R_AARCH64_JUMP_SLOT pthread_getspecific
00000000000cd9c0 R_AARCH64_JUMP_SLOT pthread_once
00000000000cd9c8 R_AARCH64_JUMP_SLOT pthread_setspecific
00000000000cd9d0 R_AARCH64_JUMP_SLOT pthread_key_delete
00000000000cd9d8 R_AARCH64_JUMP_SLOT pthread_key_create
00000000000cd9e0 R_AARCH64_JUMP_SLOT getauxval
00000000000cd9e8 R_AARCH64_JUMP_SLOT __system_property_get
00000000000cd9f0 R_AARCH64_JUMP_SLOT strncmp
00000000000cd9f8 R_AARCH64_JUMP_SLOT fprintf
00000000000cda00 R_AARCH64_JUMP_SLOT fflush
00000000000cda08 R_AARCH64_JUMP_SLOT pthread_rwlock_wrlock
00000000000cda10 R_AARCH64_JUMP_SLOT pthread_rwlock_unlock
00000000000cda18 R_AARCH64_JUMP_SLOT dl_iterate_phdr
00000000000cda20 R_AARCH64_JUMP_SLOT pthread_rwlock_rdlock
00000000000cda28 R_AARCH64_JUMP_SLOT fwrite