int main()
{
std::cout << "Enter two numbers:" << std::endl;
int v1 = 0, v2 = 0;
std::cin >> v1 >> v2;
std::cout << "The sum of " << v1 << " and " << v2
<< " is " << v1 + v2 << std::endl;
return 0;
}
(gdb) show disassembly-flavor
The disassembly flavor is "att".
disassemble main
Dump of assembler code for function main():
0x000000000040092d <+0>: push %rbp
0x000000000040092e <+1>: mov %rsp,%rbp
0x0000000000400931 <+4>: push %r13
0x0000000000400933 <+6>: push %r12
0x0000000000400935 <+8>: push %rbx
0x0000000000400936 <+9>: sub $0x18,%rsp
0x000000000040093a <+13>: mov $0x400ad4,%esi
0x000000000040093f <+18>: mov $0x6011a0,%edi
0x0000000000400944 <+23>: callq 0x400800 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@plt>
0x0000000000400949 <+28>: mov $0x400830,%esi
0x000000000040094e <+33>: mov %rax,%rdi
0x0000000000400951 <+36>: callq 0x400820 <_ZNSolsEPFRSoS_E@plt>
0x0000000000400956 <+41>: movl $0x0,-0x28(%rbp)
0x000000000040095d <+48>: movl $0x0,-0x24(%rbp)
0x0000000000400964 <+55>: lea -0x28(%rbp),%rax
0x0000000000400968 <+59>: mov %rax,%rsi
0x000000000040096b <+62>: mov $0x601080,%edi
0x0000000000400970 <+67>: callq 0x400810 <_ZNSirsERi@plt>
0x0000000000400975 <+72>: lea -0x24(%rbp),%rdx
0x0000000000400979 <+76>: mov %rdx,%rsi
0x000000000040097c <+79>: mov %rax,%rdi
<return> to continue, or q <return> to quit---
0x000000000040097f <+82>: callq 0x400810 <_ZNSirsERi@plt>
0x0000000000400984 <+87>: mov -0x28(%rbp),%edx
0x0000000000400987 <+90>: mov -0x24(%rbp),%eax
0x000000000040098a <+93>: lea (%rdx,%rax,1),%r13d
0x000000000040098e <+97>: mov -0x24(%rbp),%ebx
0x0000000000400991 <+100>: mov -0x28(%rbp),%r12d
0x0000000000400995 <+104>: mov $0x400ae7,%esi
0x000000000040099a <+109>: mov $0x6011a0,%edi
0x000000000040099f <+114>: callq 0x400800 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@plt>
0x00000000004009a4 <+119>: mov %r12d,%esi
0x00000000004009a7 <+122>: mov %rax,%rdi
0x00000000004009aa <+125>: callq 0x4007a0 <_ZNSolsEi@plt>
0x00000000004009af <+130>: mov $0x400af3,%esi
0x00000000004009b4 <+135>: mov %rax,%rdi
0x00000000004009b7 <+138>: callq 0x400800 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@plt>
0x00000000004009bc <+143>: mov %ebx,%esi
0x00000000004009be <+145>: mov %rax,%rdi
0x00000000004009c1 <+148>: callq 0x4007a0 <_ZNSolsEi@plt>
0x00000000004009c6 <+153>: mov $0x400af9,%esi
0x00000000004009cb <+158>: mov %rax,%rdi
0x00000000004009ce <+161>: callq 0x400800 <_ZStlsISt11char_traitsIcEERSt13---Type <return> to continue, or q <return> to quit---
basic_ostreamIcT_ES5_PKc@plt>
0x00000000004009d3 <+166>: mov %r13d,%esi
0x00000000004009d6 <+169>: mov %rax,%rdi
0x00000000004009d9 <+172>: callq 0x4007a0 <_ZNSolsEi@plt>
0x00000000004009de <+177>: mov $0x400830,%esi
0x00000000004009e3 <+182>: mov %rax,%rdi
0x00000000004009e6 <+185>: callq 0x400820 <_ZNSolsEPFRSoS_E@plt>
0x00000000004009eb <+190>: mov $0x0,%eax
0x00000000004009f0 <+195>: add $0x18,%rsp
0x00000000004009f4 <+199>: pop %rbx
0x00000000004009f5 <+200>: pop %r12
0x00000000004009f7 <+202>: pop %r13
0x00000000004009f9 <+204>: pop %rbp
0x00000000004009fa <+205>: retq
End of assembler dump.
(gdb) set disassembly-flavor intel
(gdb) show disassembly-flavor
The disassembly flavor is "intel".
disassemble main
Dump of assembler code for function main():
0x000000000040092d <+0>: push rbp
0x000000000040092e <+1>: mov rbp,rsp
0x0000000000400931 <+4>: push r13
0x0000000000400933 <+6>: push r12
0x0000000000400935 <+8>: push rbx
0x0000000000400936 <+9>: sub rsp,0x18
0x000000000040093a <+13>: mov esi,0x400ad4
0x000000000040093f <+18>: mov edi,0x6011a0
0x0000000000400944 <+23>: call 0x400800 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@plt>
0x0000000000400949 <+28>: mov esi,0x400830
0x000000000040094e <+33>: mov rdi,rax
0x0000000000400951 <+36>: call 0x400820 <_ZNSolsEPFRSoS_E@plt>
0x0000000000400956 <+41>: mov DWORD PTR [rbp-0x28],0x0
0x000000000040095d <+48>: mov DWORD PTR [rbp-0x24],0x0
0x0000000000400964 <+55>: lea rax,[rbp-0x28]
0x0000000000400968 <+59>: mov rsi,rax
0x000000000040096b <+62>: mov edi,0x601080
0x0000000000400970 <+67>: call 0x400810 <_ZNSirsERi@plt>
0x0000000000400975 <+72>: lea rdx,[rbp-0x24]
0x0000000000400979 <+76>: mov rsi,rdx
0x000000000040097c <+79>: mov rdi,rax
<return> to continue, or q <return> to quit---
0x000000000040097f <+82>: call 0x400810 <_ZNSirsERi@plt>
0x0000000000400984 <+87>: mov edx,DWORD PTR [rbp-0x28]
0x0000000000400987 <+90>: mov eax,DWORD PTR [rbp-0x24]
0x000000000040098a <+93>: lea r13d,[rdx+rax*1]
0x000000000040098e <+97>: mov ebx,DWORD PTR [rbp-0x24]
0x0000000000400991 <+100>: mov r12d,DWORD PTR [rbp-0x28]
0x0000000000400995 <+104>: mov esi,0x400ae7
0x000000000040099a <+109>: mov edi,0x6011a0
0x000000000040099f <+114>: call 0x400800 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@plt>
0x00000000004009a4 <+119>: mov esi,r12d
0x00000000004009a7 <+122>: mov rdi,rax
0x00000000004009aa <+125>: call 0x4007a0 <_ZNSolsEi@plt>
0x00000000004009af <+130>: mov esi,0x400af3
0x00000000004009b4 <+135>: mov rdi,rax
0x00000000004009b7 <+138>: call 0x400800 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@plt>
0x00000000004009bc <+143>: mov esi,ebx
0x00000000004009be <+145>: mov rdi,rax
0x00000000004009c1 <+148>: call 0x4007a0 <_ZNSolsEi@plt>
0x00000000004009c6 <+153>: mov esi,0x400af9
0x00000000004009cb <+158>: mov rdi,rax
0x00000000004009ce <+161>: call 0x400800 <_ZStlsISt11char_traitsIcEERSt13---Type <return> to continue, or q <return> to quit---
basic_ostreamIcT_ES5_PKc@plt>
0x00000000004009d3 <+166>: mov esi,r13d
0x00000000004009d6 <+169>: mov rdi,rax
0x00000000004009d9 <+172>: call 0x4007a0 <_ZNSolsEi@plt>
0x00000000004009de <+177>: mov esi,0x400830
0x00000000004009e3 <+182>: mov rdi,rax
0x00000000004009e6 <+185>: call 0x400820 <_ZNSolsEPFRSoS_E@plt>
0x00000000004009eb <+190>: mov eax,0x0
0x00000000004009f0 <+195>: add rsp,0x18
0x00000000004009f4 <+199>: pop rbx
0x00000000004009f5 <+200>: pop r12
0x00000000004009f7 <+202>: pop r13
0x00000000004009f9 <+204>: pop rbp
0x00000000004009fa <+205>: ret
End of assembler dump.
原文始发于微信公众号(汇编语言):Linux C++ 调试神技--如何将Linux C++ 可执行文件逆向工程到Intel格式汇编
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论