zoukankan      html  css  js  c++  java
  • 第五周实验楼反汇编实验

    第五周实验楼反汇编实验

    实验步骤

    • 使用基于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 $0xf 0xffffcff8 0xffffcff8 0x0
    call 0x80483e6   0xffffcff8  0xffffcff4  0xf 0x0
    push %ebp  0xffffcff8  0xffffcff0  0x8048400 0xf 0x0
     mov %esp,%ebp  0xffffcff8 0xffffcfec   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),%eax 0xffffcfe0  0xffffcfe0  0xfffff03c 0x80483f1 0xf 0xfffff048 0x8048400 0xf 0x0
     ret  0xffffcfec  0xffffcfe4  0x80483f1 0xf 0xfffff048 0x8048400 0xf 0x0
     leave 0xffffcfec   0xffffcfec  0xfffff048 0x8048400 0xf 0x0
     ret  0xffffcff8  0xffffcff0  0x8048400 0xf 0x0
     add $0x4,%esp  0xffffcff8  0xffffcff4 0xf 0x0 
     add $0x3,%eax 0xffffcff8   0xffffcff8 0x0 
     ret  0x0  0xffffcffc  

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

    问题:

    解决方法:

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

  • 相关阅读:
    二叉搜索树的后序遍历序列(python)
    从上往下打印二叉树(python)
    仿 PS中的颜色填充工具
    噪点图
    另一种噪点图 (有点类似卫星云图)
    像素融解
    比较位图差异
    颜色变换
    像素拷贝及赋值
    使用(模糊)滤镜
  • 原文地址:https://www.cnblogs.com/sjy519/p/6184090.html
Copyright © 2011-2022 走看看