本文主要是介绍反汇编,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
反汇编
使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb example指令进入gdb调试器:
- 用gcc在64位机器上编译一个32位的程序,遇到报错,具体如下图:
![32位错误](/images/baidian.png)
- 这是因为编译64位Linux版本32位的二进制文件,需要安装一个库,使用指令
sudo apt-get install libc6-dev-i386
![开始gdb](/images/baidian.png)
- 进入之后先在main函数处设置一个断点,再run一下,使用disassemble指令获取汇编代码,用i(info) r(registers)指令查看各寄存器的值:
![获取汇编代码](/images/baidian.png)
![查看寄存器的值](/images/baidian.png)
- 可见此时主函数的栈基址为0xffffd1e8,用x(examine)指令查看内存地址中的值,但目前%esp所指堆栈内容为0,%ebp所指内容也为0
这篇关于反汇编的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!