1. 程式人生 > 其它 >反彙編測試(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)的值和棧的變化情況如下: