Java教程

反汇编

本文主要是介绍反汇编,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

反汇编

使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb example指令进入gdb调试器:

  • 用gcc在64位机器上编译一个32位的程序,遇到报错,具体如下图:
    32位错误
  • 这是因为编译64位Linux版本32位的二进制文件,需要安装一个库,使用指令
    sudo apt-get install libc6-dev-i386

开始gdb

  • 进入之后先在main函数处设置一个断点,再run一下,使用disassemble指令获取汇编代码,用i(info) r(registers)指令查看各寄存器的值:

获取汇编代码
查看寄存器的值

  • 可见此时主函数的栈基址为0xffffd1e8,用x(examine)指令查看内存地址中的值,但目前%esp所指堆栈内容为0,%ebp所指内容也为0
这篇关于反汇编的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!