Java教程

反汇编测试(20191213兰毅达)

本文主要是介绍反汇编测试(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,得到汇编代码:

    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)的值和栈的变化情况如下:
这篇关于反汇编测试(20191213兰毅达)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!