Disassembly of direct and indirect function() call

Created Diff never expires
20 removals
182 lines
23 additions
184 lines


subroutine_direct: file format elf64-x86-64
subroutine_indirect: file format elf64-x86-64




Disassembly of section .init:
Disassembly of section .init:


0000000000000528 <_init>:
0000000000000528 <_init>:
528: 48 83 ec 08 sub rsp,0x8
528: 48 83 ec 08 sub rsp,0x8
52c: 48 8b 05 b5 0a 20 00 mov rax,QWORD PTR [rip+0x200ab5] # 200fe8 <__gmon_start__>
52c: 48 8b 05 b5 0a 20 00 mov rax,QWORD PTR [rip+0x200ab5] # 200fe8 <__gmon_start__>
533: 48 85 c0 test rax,rax
533: 48 85 c0 test rax,rax
536: 74 02 je 53a <_init+0x12>
536: 74 02 je 53a <_init+0x12>
538: ff d0 call rax
538: ff d0 call rax
53a: 48 83 c4 08 add rsp,0x8
53a: 48 83 c4 08 add rsp,0x8
53e: c3 ret
53e: c3 ret


Disassembly of section .plt:
Disassembly of section .plt:


0000000000000540 <.plt>:
0000000000000540 <.plt>:
540: ff 35 72 0a 20 00 push QWORD PTR [rip+0x200a72] # 200fb8 <_GLOBAL_OFFSET_TABLE_+0x8>
540: ff 35 72 0a 20 00 push QWORD PTR [rip+0x200a72] # 200fb8 <_GLOBAL_OFFSET_TABLE_+0x8>
546: ff 25 74 0a 20 00 jmp QWORD PTR [rip+0x200a74] # 200fc0 <_GLOBAL_OFFSET_TABLE_+0x10>
546: ff 25 74 0a 20 00 jmp QWORD PTR [rip+0x200a74] # 200fc0 <_GLOBAL_OFFSET_TABLE_+0x10>
54c: 0f 1f 40 00 nop DWORD PTR [rax+0x0]
54c: 0f 1f 40 00 nop DWORD PTR [rax+0x0]


0000000000000550 <puts@plt>:
0000000000000550 <puts@plt>:
550: ff 25 72 0a 20 00 jmp QWORD PTR [rip+0x200a72] # 200fc8 <puts@GLIBC_2.2.5>
550: ff 25 72 0a 20 00 jmp QWORD PTR [rip+0x200a72] # 200fc8 <puts@GLIBC_2.2.5>
556: 68 00 00 00 00 push 0x0
556: 68 00 00 00 00 push 0x0
55b: e9 e0 ff ff ff jmp 540 <.plt>
55b: e9 e0 ff ff ff jmp 540 <.plt>


0000000000000560 <printf@plt>:
0000000000000560 <printf@plt>:
560: ff 25 6a 0a 20 00 jmp QWORD PTR [rip+0x200a6a] # 200fd0 <printf@GLIBC_2.2.5>
560: ff 25 6a 0a 20 00 jmp QWORD PTR [rip+0x200a6a] # 200fd0 <printf@GLIBC_2.2.5>
566: 68 01 00 00 00 push 0x1
566: 68 01 00 00 00 push 0x1
56b: e9 d0 ff ff ff jmp 540 <.plt>
56b: e9 d0 ff ff ff jmp 540 <.plt>


Disassembly of section .plt.got:
Disassembly of section .plt.got:


0000000000000570 <__cxa_finalize@plt>:
0000000000000570 <__cxa_finalize@plt>:
570: ff 25 82 0a 20 00 jmp QWORD PTR [rip+0x200a82] # 200ff8 <__cxa_finalize@GLIBC_2.2.5>
570: ff 25 82 0a 20 00 jmp QWORD PTR [rip+0x200a82] # 200ff8 <__cxa_finalize@GLIBC_2.2.5>
576: 66 90 xchg ax,ax
576: 66 90 xchg ax,ax


Disassembly of section .text:
Disassembly of section .text:


0000000000000580 <_start>:
0000000000000580 <_start>:
580: 31 ed xor ebp,ebp
580: 31 ed xor ebp,ebp
582: 49 89 d1 mov r9,rdx
582: 49 89 d1 mov r9,rdx
585: 5e pop rsi
585: 5e pop rsi
586: 48 89 e2 mov rdx,rsp
586: 48 89 e2 mov rdx,rsp
589: 48 83 e4 f0 and rsp,0xfffffffffffffff0
589: 48 83 e4 f0 and rsp,0xfffffffffffffff0
58d: 50 push rax
58d: 50 push rax
58e: 54 push rsp
58e: 54 push rsp
58f: 4c 8d 05 9a 01 00 00 lea r8,[rip+0x19a] # 730 <__libc_csu_fini>
58f: 4c 8d 05 9a 01 00 00 lea r8,[rip+0x19a] # 730 <__libc_csu_fini>
596: 48 8d 0d 23 01 00 00 lea rcx,[rip+0x123] # 6c0 <__libc_csu_init>
596: 48 8d 0d 23 01 00 00 lea rcx,[rip+0x123] # 6c0 <__libc_csu_init>
59d: 48 8d 3d d8 00 00 00 lea rdi,[rip+0xd8] # 67c <main>
59d: 48 8d 3d d8 00 00 00 lea rdi,[rip+0xd8] # 67c <main>
5a4: ff 15 36 0a 20 00 call QWORD PTR [rip+0x200a36] # 200fe0 <__libc_start_main@GLIBC_2.2.5>
5a4: ff 15 36 0a 20 00 call QWORD PTR [rip+0x200a36] # 200fe0 <__libc_start_main@GLIBC_2.2.5>
5aa: f4 hlt
5aa: f4 hlt
5ab: 0f 1f 44 00 00 nop DWORD PTR [rax+rax*1+0x0]
5ab: 0f 1f 44 00 00 nop DWORD PTR [rax+rax*1+0x0]


00000000000005b0 <deregister_tm_clones>:
00000000000005b0 <deregister_tm_clones>:
5b0: 48 8d 3d 59 0a 20 00 lea rdi,[rip+0x200a59] # 201010 <__TMC_END__>
5b0: 48 8d 3d 59 0a 20 00 lea rdi,[rip+0x200a59] # 201010 <__TMC_END__>
5b7: 48 8d 05 52 0a 20 00 lea rax,[rip+0x200a52] # 201010 <__TMC_END__>
5b7: 48 8d 05 52 0a 20 00 lea rax,[rip+0x200a52] # 201010 <__TMC_END__>
5be: 48 39 f8 cmp rax,rdi
5be: 48 39 f8 cmp rax,rdi
5c1: 74 15 je 5d8 <deregister_tm_clones+0x28>
5c1: 74 15 je 5d8 <deregister_tm_clones+0x28>
5c3: 48 8b 05 0e 0a 20 00 mov rax,QWORD PTR [rip+0x200a0e] # 200fd8 <_ITM_deregisterTMCloneTable>
5c3: 48 8b 05 0e 0a 20 00 mov rax,QWORD PTR [rip+0x200a0e] # 200fd8 <_ITM_deregisterTMCloneTable>
5ca: 48 85 c0 test rax,rax
5ca: 48 85 c0 test rax,rax
5cd: 74 09 je 5d8 <deregister_tm_clones+0x28>
5cd: 74 09 je 5d8 <deregister_tm_clones+0x28>
5cf: ff e0 jmp rax
5cf: ff e0 jmp rax
5d1: 0f 1f 80 00 00 00 00 nop DWORD PTR [rax+0x0]
5d1: 0f 1f 80 00 00 00 00 nop DWORD PTR [rax+0x0]
5d8: c3 ret
5d8: c3 ret
5d9: 0f 1f 80 00 00 00 00 nop DWORD PTR [rax+0x0]
5d9: 0f 1f 80 00 00 00 00 nop DWORD PTR [rax+0x0]


00000000000005e0 <register_tm_clones>:
00000000000005e0 <register_tm_clones>:
5e0: 48 8d 3d 29 0a 20 00 lea rdi,[rip+0x200a29] # 201010 <__TMC_END__>
5e0: 48 8d 3d 29 0a 20 00 lea rdi,[rip+0x200a29] # 201010 <__TMC_END__>
5e7: 48 8d 35 22 0a 20 00 lea rsi,[rip+0x200a22] # 201010 <__TMC_END__>
5e7: 48 8d 35 22 0a 20 00 lea rsi,[rip+0x200a22] # 201010 <__TMC_END__>
5ee: 48 29 fe sub rsi,rdi
5ee: 48 29 fe sub rsi,rdi
5f1: 48 89 f0 mov rax,rsi
5f1: 48 89 f0 mov rax,rsi
5f4: 48 c1 ee 3f shr rsi,0x3f
5f4: 48 c1 ee 3f shr rsi,0x3f
5f8: 48 c1 f8 03 sar rax,0x3
5f8: 48 c1 f8 03 sar rax,0x3
5fc: 48 01 c6 add rsi,rax
5fc: 48 01 c6 add rsi,rax
5ff: 48 d1 fe sar rsi,1
5ff: 48 d1 fe sar rsi,1
602: 74 14 je 618 <register_tm_clones+0x38>
602: 74 14 je 618 <register_tm_clones+0x38>
604: 48 8b 05 e5 09 20 00 mov rax,QWORD PTR [rip+0x2009e5] # 200ff0 <_ITM_registerTMCloneTable>
604: 48 8b 05 e5 09 20 00 mov rax,QWORD PTR [rip+0x2009e5] # 200ff0 <_ITM_registerTMCloneTable>
60b: 48 85 c0 test rax,rax
60b: 48 85 c0 test rax,rax
60e: 74 08 je 618 <register_tm_clones+0x38>
60e: 74 08 je 618 <register_tm_clones+0x38>
610: ff e0 jmp rax
610: ff e0 jmp rax
612: 66 0f 1f 44 00 00 nop WORD PTR [rax+rax*1+0x0]
612: 66 0f 1f 44 00 00 nop WORD PTR [rax+rax*1+0x0]
618: c3 ret
618: c3 ret
619: 0f 1f 80 00 00 00 00 nop DWORD PTR [rax+0x0]
619: 0f 1f 80 00 00 00 00 nop DWORD PTR [rax+0x0]


0000000000000620 <__do_global_dtors_aux>:
0000000000000620 <__do_global_dtors_aux>:
620: 80 3d e9 09 20 00 00 cmp BYTE PTR [rip+0x2009e9],0x0 # 201010 <__TMC_END__>
620: 80 3d e9 09 20 00 00 cmp BYTE PTR [rip+0x2009e9],0x0 # 201010 <__TMC_END__>
627: 75 2f jne 658 <__do_global_dtors_aux+0x38>
627: 75 2f jne 658 <__do_global_dtors_aux+0x38>
629: 55 push rbp
629: 55 push rbp
62a: 48 83 3d c6 09 20 00 00 cmp QWORD PTR [rip+0x2009c6],0x0 # 200ff8 <__cxa_finalize@GLIBC_2.2.5>
62a: 48 83 3d c6 09 20 00 00 cmp QWORD PTR [rip+0x2009c6],0x0 # 200ff8 <__cxa_finalize@GLIBC_2.2.5>
632: 48 89 e5 mov rbp,rsp
632: 48 89 e5 mov rbp,rsp
635: 74 0c je 643 <__do_global_dtors_aux+0x23>
635: 74 0c je 643 <__do_global_dtors_aux+0x23>
637: 48 8b 3d ca 09 20 00 mov rdi,QWORD PTR [rip+0x2009ca] # 201008 <__dso_handle>
637: 48 8b 3d ca 09 20 00 mov rdi,QWORD PTR [rip+0x2009ca] # 201008 <__dso_handle>
63e: e8 2d ff ff ff call 570 <__cxa_finalize@plt>
63e: e8 2d ff ff ff call 570 <__cxa_finalize@plt>
643: e8 68 ff ff ff call 5b0 <deregister_tm_clones>
643: e8 68 ff ff ff call 5b0 <deregister_tm_clones>
648: c6 05 c1 09 20 00 01 mov BYTE PTR [rip+0x2009c1],0x1 # 201010 <__TMC_END__>
648: c6 05 c1 09 20 00 01 mov BYTE PTR [rip+0x2009c1],0x1 # 201010 <__TMC_END__>
64f: 5d pop rbp
64f: 5d pop rbp
650: c3 ret
650: c3 ret
651: 0f 1f 80 00 00 00 00 nop DWORD PTR [rax+0x0]
651: 0f 1f 80 00 00 00 00 nop DWORD PTR [rax+0x0]
658: c3 ret
658: c3 ret
659: 0f 1f 80 00 00 00 00 nop DWORD PTR [rax+0x0]
659: 0f 1f 80 00 00 00 00 nop DWORD PTR [rax+0x0]


0000000000000660 <frame_dummy>:
0000000000000660 <frame_dummy>:
660: e9 7b ff ff ff jmp 5e0 <register_tm_clones>
660: e9 7b ff ff ff jmp 5e0 <register_tm_clones>


0000000000000665 <subroutine>:
0000000000000665 <subroutine>:
665: 55 push rbp
665: 55 push rbp
666: 48 89 e5 mov rbp,rsp
666: 48 89 e5 mov rbp,rsp
669: 48 8d 3d d4 00 00 00 lea rdi,[rip+0xd4] # 744 <_IO_stdin_used+0x4>
669: 48 8d 3d d4 00 00 00 lea rdi,[rip+0xd4] # 744 <_IO_stdin_used+0x4>
670: e8 db fe ff ff call 550 <puts@plt>
670: e8 db fe ff ff call 550 <puts@plt>
675: b8 00 00 00 00 mov eax,0x0
675: b8 00 00 00 00 mov eax,0x0
67a: 5d pop rbp
67a: 5d pop rbp
67b: c3 ret
67b: c3 ret


000000000000067c <main>:
000000000000067c <main>:
67c: 55 push rbp
67c: 55 push rbp
67d: 48 89 e5 mov rbp,rsp
67d: 48 89 e5 mov rbp,rsp
680: 48 83 ec 10 sub rsp,0x10
680: 48 83 ec 20 sub rsp,0x20
684: 89 7d fc mov DWORD PTR [rbp-0x4],edi
684: 89 7d ec mov DWORD PTR [rbp-0x14],edi
687: 48 89 75 f0 mov QWORD PTR [rbp-0x10],rsi
687: 48 89 75 e0 mov QWORD PTR [rbp-0x20],rsi
68b: 48 8b 45 f0 mov rax,QWORD PTR [rbp-0x10]
68b: 48 8b 45 e0 mov rax,QWORD PTR [rbp-0x20]
68f: 48 8b 00 mov rax,QWORD PTR [rax]
68f: 48 8b 00 mov rax,QWORD PTR [rax]
692: 48 89 c6 mov rsi,rax
692: 48 89 c6 mov rsi,rax
695: 48 8d 3d be 00 00 00 lea rdi,[rip+0xbe] # 75a <_IO_stdin_used+0x1a>
695: 48 8d 3d be 00 00 00 lea rdi,[rip+0xbe] # 75a <_IO_stdin_used+0x1a>
69c: b8 00 00 00 00 mov eax,0x0
69c: b8 00 00 00 00 mov eax,0x0
6a1: e8 ba fe ff ff call 560 <printf@plt>
6a1: e8 ba fe ff ff call 560 <printf@plt>
6a6: b8 00 00 00 00 mov eax,0x0
6a6: 48 8d 05 b8 ff ff ff lea rax,[rip+0xffffffffffffffb8] # 665 <subroutine>
6ab: e8 b5 ff ff ff call 665 <subroutine>
6ad: 48 89 45 f8 mov QWORD PTR [rbp-0x8],rax
6b0: b8 00 00 00 00 mov eax,0x0
6b1: 48 8b 45 f8 mov rax,QWORD PTR [rbp-0x8]
6b5: c9 leave
6b5: ff d0 call rax
6b6: c3 ret
6b7: b8 00 00 00 00 mov eax,0x0
6b7: 66 0f 1f 84 00 00 00 00 00 nop WORD PTR [rax+rax*1+0x0]
6bc: c9 leave
6bd: c3 ret
6be: 66 90 xchg ax,ax


00000000000006c0 <__libc_csu_init>:
00000000000006c0 <__libc_csu_init>:
6c0: 41 57 push r15
6c0: 41 57 push r15
6c2: 41 56 push r14
6c2: 41 56 push r14
6c4: 49 89 d7 mov r15,rdx
6c4: 49 89 d7 mov r15,rdx
6c7: 41 55 push r13
6c7: 41 55 push r13
6c9: 41 54 push r12
6c9: 41 54 push r12
6cb: 4c 8d 25 de 06 20 00 lea r12,[rip+0x2006de] # 200db0 <__frame_dummy_init_array_entry>
6cb: 4c 8d 25 de 06 20 00 lea r12,[rip+0x2006de] # 200db0 <__frame_dummy_init_array_entry>
6d2: 55 push rbp
6d2: 55 push rbp
6d3: 48 8d 2d de 06 20 00 lea rbp,[rip+0x2006de] # 200db8 <__init_array_end>
6d3: 48 8d 2d de 06 20 00 lea rbp,[rip+0x2006de] # 200db8 <__init_array_end>
6da: 53 push rbx
6da: 53 push rbx
6db: 41 89 fd mov r13d,edi
6db: 41 89 fd mov r13d,edi
6de: 49 89 f6 mov r14,rsi
6de: 49 89 f6 mov r14,rsi
6e1: 4c 29 e5 sub rbp,r12
6e1: 4c 29 e5 sub rbp,r12
6e4: 48 83 ec 08 sub rsp,0x8
6e4: 48 83 ec 08 sub rsp,0x8
6e8: 48 c1 fd 03 sar rbp,0x3
6e8: 48 c1 fd 03 sar rbp,0x3
6ec: e8 37 fe ff ff call 528 <_init>
6ec: e8 37 fe ff ff call 528 <_init>
6f1: 48 85 ed test rbp,rbp
6f1: 48 85 ed test rbp,rbp
6f4: 74 20 je 716 <__libc_csu_init+0x56>
6f4: 74 20 je 716 <__libc_csu_init+0x56>
6f6: 31 db xor ebx,ebx
6f6: 31 db xor ebx,ebx
6f8: 0f 1f 84 00 00 00 00 00 nop DWORD PTR [rax+rax*1+0x0]
6f8: 0f 1f 84 00 00 00 00 00 nop DWORD PTR [rax+rax*1+0x0]
700: 4c 89 fa mov rdx,r15
700: 4c 89 fa mov rdx,r15
703: 4c 89 f6 mov rsi,r14
703: 4c 89 f6 mov rsi,r14
706: 44 89 ef mov edi,r13d
706: 44 89 ef mov edi,r13d
709: 41 ff 14 dc call QWORD PTR [r12+rbx*8]
709: 41 ff 14 dc call QWORD PTR [r12+rbx*8]
70d: 48 83 c3 01 add rbx,0x1
70d: 48 83 c3 01 add rbx,0x1
711: 48 39 dd cmp rbp,rbx
711: 48 39 dd cmp rbp,rbx
714: 75 ea jne 700 <__libc_csu_init+0x40>
714: 75 ea jne 700 <__libc_csu_init+0x40>
716: 48 83 c4 08 add rsp,0x8
716: 48 83 c4 08 add rsp,0x8
71a: 5b pop rbx
71a: 5b pop rbx
71b: 5d pop rbp
71b: 5d pop rbp
71c: 41 5c pop r12
71c: 41 5c pop r12
71e: 41 5d pop r13
71e: 41 5d pop r13
720: 41 5e pop r14
720: 41 5e pop r14
722: 41 5f pop r15
722: 41 5f pop r15
724: c3 ret
724: c3 ret
725: 90 nop
725: 90 nop
726: 66 2e 0f 1f 84 00 00 00 00 00 nop WORD PTR cs:[rax+rax*1+0x0]
726: 66 2e 0f 1f 84 00 00 00 00 00 nop WORD PTR cs:[rax+rax*1+0x0]


0000000000000730 <__libc_csu_fini>:
0000000000000730 <__libc_csu_fini>:
730: f3 c3 repz ret
730: f3 c3 repz ret


Disassembly of section .fini:
Disassembly of section .fini:


0000000000000734 <_fini>:
0000000000000734 <_fini>:
734: 48 83 ec 08 sub rsp,0x8
734: 48 83 ec 08 sub rsp,0x8
738: 48 83 c4 08 add rsp,0x8
738: 48 83 c4 08 add rsp,0x8
73c: c3 ret
73c: c3 ret