第五周实验楼反汇编实验

第五周实验楼反汇编实验

实验步骤

  • 使用基于64位Linux版本32位编译调试指令:

    sudo apt-get install libc6-dev-i386

  • 生成汇编代码:

    gcc -g code.c -o code -m32
    
  • 进入gdb调试器: 

    gdb code

  • 在main函数处断点设置:

    b main
    
  • 开始gdb调试:

    run

  • 使用disassemble 指令获取汇编代码,用i(info) r(registers) 指令查看各寄存器的值 

    • 第1列:寄存器名称
    • 第2列:寄存器的地址
    • 第3列:寄存器中存的值

  • 使用display /i $pc 命令查看当前执行的汇编代码 

  • 使用print /x $ebp(esp) 命令查看相应寄存器的值 

  • 使用si 命令执行下一步 

寄存器分析

指令      %ebp%esp    堆栈             
push $0xf0xffffcff80xffffcff80x0
call 0x80483e6  0xffffcff8 0xffffcff4 0xf 0x0
push %ebp 0xffffcff8 0xffffcff0 0x8048400 0xf 0x0
 mov %esp,%ebp 0xffffcff80xffffcfec  0xfffff048 0x8048400 0xf 0x0
 pushl 0x8(%ebp) 0xffffcfec 0xffffcfec 0xfffff048 0x8048400 0xf 0x0
 call 0x80483db 0xffffcfec 0xffffcfe8 0xf 0xfffff048 0x8048400 0xf 0x0
  push %ebp 0xffffcfec 0xffffcfe4    0x80483f1 0xf 0xfffff048 0x8048400 0xf 0x0 
 mov %esp,%ebp 0xffffcfec 0xffffcfe0 0xfffff03c 0x80483f1 0xf 0xfffff048 0x8048400 0xf 0x0 
 mov 0x8(%ebp),%eax0xffffcfe0 0xffffcfe0 0xfffff03c 0x80483f1 0xf 0xfffff048 0x8048400 0xf 0x0
 ret 0xffffcfec 0xffffcfe4 0x80483f1 0xf 0xfffff048 0x8048400 0xf 0x0
 leave0xffffcfec  0xffffcfec 0xfffff048 0x8048400 0xf 0x0
 ret 0xffffcff8 0xffffcff0 0x8048400 0xf 0x0
 add $0x4,%esp 0xffffcff8 0xffffcff40xf 0x0 
 add $0x3,%eax0xffffcff8  0xffffcff80x0 
 ret 0x0 0xffffcffc 

 

实验中遇到的问题和解决方法

问题:

解决方法:

通过上网百度和请教老师,我尝试拷贝其他同学的sources.list 文件(如上图所示)到自己的虚拟机中,然后更新,再次输入sudo apt-get install libc6-dev-i386 命令,终于解决了问题。

转载于:https://www.cnblogs.com/sjy519/p/6184090.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值