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