反汇编测试(20191213兰毅达)

反汇编测试

任务详情

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

  1. 参考http://www.cnblogs.com/lxm20145215----/p/5982554.html,使用gdb跟踪汇编代码,在纸上画出f中每一条语句引起的eip(rip),ebp(rbp),esp(rsb),eax(rax)的值和栈的变化情况。提交照片,要有学号信息。
    Step1:进入gdb模式,在main函数处设置行断点,run后输入disassemble,得到汇编代码:
    反汇编测试(20191213兰毅达)
    Step2:
    输入i r(info registers),然后用x/4a SP的值看栈的值:
    Step3:
    输入命令display/i $pc,符号=>后跟着的是系统正在执行的命令,输入si,用i r查看这条命令执行结束后寄存器的值的变化,然后用x/4a SP的值看栈的值:
    反汇编测试(20191213兰毅达)
    反汇编测试(20191213兰毅达)
    反汇编测试(20191213兰毅达)
    反汇编测试(20191213兰毅达)
    反汇编测试(20191213兰毅达)
    反汇编测试(20191213兰毅达)
    反汇编测试(20191213兰毅达)
    反汇编测试(20191213兰毅达)
    之后一直重复si i r x/4a esp的值 直到结束
    中每一条语句引起的eip(rip),ebp(rbp),esp(rsb),eax(rax)的值和栈的变化情况如下:
    反汇编测试(20191213兰毅达)
上一篇:常见的术语及基本概念


下一篇:ThingsBoard 设备发送RPC 给服务器 (含规则链修改)