gef➤ disassemble main
Dump of assembler code for function main:
0x00000000004005f6 <+0>: push rbp
0x00000000004005f7 <+1>: mov rbp,rsp
=> 0x00000000004005fa <+4>: sub rsp,0x30
0x00000000004005fe <+8>: mov DWORD PTR [rbp-0x24],edi
0x0000000000400601 <+11>: mov QWORD PTR [rbp-0x30],rsi
0x0000000000400605 <+15>: mov rax,QWORD PTR fs:0x28
0x000000000040060e <+24>: mov QWORD PTR [rbp-0x8],rax
0x0000000000400612 <+28>: xor eax,eax
0x0000000000400614 <+30>: mov rax,QWORD PTR [rbp-0x30]
0x0000000000400618 <+34>: mov rax,QWORD PTR [rax]
0x000000000040061b <+37>: mov rsi,rax
0x000000000040061e <+40>: mov edi,0x4006f4
0x0000000000400623 <+45>: mov eax,0x0
0x0000000000400628 <+50>: call 0x4004c0 <printf@plt>
0x000000000040062d <+55>: lea rax,[rbp-0x20]
0x0000000000400631 <+59>: mov rsi,rax
0x0000000000400634 <+62>: mov edi,0x400701
0x0000000000400639 <+67>: mov eax,0x0
0x000000000040063e <+72>: call 0x4004e0 <__isoc99_scanf@plt>
0x0000000000400643 <+77>: mov rax,QWORD PTR [rbp-0x30]
0x0000000000400647 <+81>: mov QWORD PTR [rax],0x400704
0x000000000040064e <+88>: nop
0x000000000040064f <+89>: mov rax,QWORD PTR [rbp-0x8]
0x0000000000400653 <+93>: xor rax,QWORD PTR fs:0x28 # 检查 canary 是否相同
0x000000000040065c <+102>: je 0x400663 <main+109> # 相同
0x000000000040065e <+104>: call 0x4004b0 <__stack_chk_fail@plt> # 不相同
0x0000000000400663 <+109>: leave
0x0000000000400664 <+110>: ret
End of assembler dump.