• 反汇编测试


    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)的值和栈的变化情况如下:

  • 相关阅读:
    线程安全,syncronized 用法
    线程
    Log4j2
    线性规划
    不要在using语句中调用WCF服务
    kibana 查询语法
    ES中DSL查询相关
    ES通过API调整设置
    ElasticSearch架构思考(转)
    Elasticsearch集群UNASSIGNED
  • 原文地址:https://www.cnblogs.com/Werido-/p/15507971.html
Copyright © 2020-2023  润新知