.text:
00000648
_start
.text:
00000648
4F
F0
00
0B
MOV.W R11,
.text:
0000064C
4F
F0
00
0E
MOV.W LR,
.text:
00000650
02
BC POP {R1} ; argc
.text:
00000652
6A
46
MOV R2, SP ; ubp_av
.text:
00000654
04
B4 PUSH {R2} ; stack_end
.text:
00000656
01
B4 PUSH {R0} ; rtld_fini
.text:
00000658
DF F8
24
A0 LDR.W R10,
=
($_GLOBAL_OFFSET_TABLE_
-
0x680
)
; $_GLOBAL_OFFSET_TABLE_
10FAC
=
680
+
1092c
相对于偏移表的偏移。
.text:
0000065C
08
A3 ADR R3, off_680
.text:
0000065E
9A
44
ADD R10, R3 ; $_GLOBAL_OFFSET_TABLE_
.text:
00000660
DF F8
20
C0 LDR.W R12,
=
(__libc_csu_fini_ptr
-
0x10FAC
)
.text:
00000664
5A
F8
0C
C0 LDR.W R12, [R10,R12] ; __libc_csu_fini
.text:
00000668
4D
F8
04
CD PUSH.W {R12} ; fini
.text:
0000066C
06
4B
LDR R3,
=
(__libc_csu_init_ptr
-
0x10FAC
)
.text:
0000066E
5A
F8
03
30
LDR.W R3, [R10,R3] ; __libc_csu_init ; init
.text:
00000672
06
48
LDR R0,
=
(main_ptr
-
0x10FAC
)
.text:
00000674
5A
F8
00
00
LDR.W R0, [R10,R0] ; main ; main
.text:
00000678
FF F7 D4 EF BLX __libc_start_main
.text:
0000067C
FF F7 BA EF BLX abort
.text:
00000680
2C
09
01
00
off_680 DCD $_GLOBAL_OFFSET_TABLE_
-
0x680
.text:
00000684
40
00
00
00
off_684 DCD __libc_csu_fini_ptr
-
0x10FAC
.text:
00000688
38
00
00
00
off_688 DCD __libc_csu_init_ptr
-
0x10FAC
.text:
0000068C
2C
00
00
00
off_68C DCD main_ptr
-
0x10FAC
/
/
objdump
-
d hello_arm
00000648
<_start>:
648
: f04f
0b00
mov.w fp,
64c
: f04f
0e00
mov.w lr,
650
: bc02 pop {r1}
652
:
466a
mov r2, sp
654
: b404 push {r2}
656
: b401 push {r0}
658
: f8df a024 ldr.w sl, [pc,
65c
: a308 add r3, pc,
65e
:
449a
add sl, r3
660
: f8df c020 ldr.w ip, [pc,
664
: f85a c00c ldr.w ip, [sl, ip]
668
: f84d cd04
str
.w ip, [sp,
66c
:
4b06
ldr r3, [pc,
66e
: f85a
3003
ldr.w r3, [sl, r3]
672
:
4806
ldr r0, [pc,
674
: f85a
0000
ldr.w r0, [sl, r0]
678
: f7ff efd4 blx
624
<__libc_start_main@plt>
67c
: f7ff efba blx
5f4
<abort@plt>
680
:
0001092c
.word
0x0001092c
684
:
00000040
.word
0x00000040
688
:
00000038
.word
0x00000038
68c
:
0000002c
.word
0x0000002c