• 反汇编测试


    1.通过输入gcc -S -o main.s main.c 将下面c程序”week0303学号.c“编译成汇编代码
    int g(int x){
    return x+3;
    }
    int f(int x){
    int i = 学号后两位;
    return g(x)+i;
    }
    int main(void){
    return f(8)+1;
    }

    Step1:进入gdb模式,在main函数处设置行断点,run后输入disassemble,得到汇编代码:



    用i(info) r(registers)指令查看各寄存器的值:

    可知主函数的栈基址为0xffffd15c,使用x(examine)指令查看内存地址中的值

    输入命令display /i $pc,符号=>后跟着的是系统正在执行的命令,输入si,用i r查看这条命令执行结束后寄存器的值的变化,然后用x/4a SP的值看栈的值:




    之后一直重复si i r x/4a esp的值 直到结束
    中每一条语句引起的eip(rip),ebp(rbp),esp(rsb),eax(rax)的值和栈的变化情况如下:

  • 相关阅读:
    hibernateValidator 升级
    java异常
    reids过期键三种删除策略
    hashmap源码探究
    http知识梳理1
    GregorianCalendar类的使用
    计算机网络笔记
    List的toArray方法
    实习周记一
    vue指令详解
  • 原文地址:https://www.cnblogs.com/Werido-/p/15507971.html
Copyright © 2020-2023  润新知