91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

函數調用棧

發布時間:2020-07-15 07:59:00 來源:網絡 閱讀:314 作者:ye小灰灰 欄目:編程語言

因為linux下的截圖工具不會用,所以下面的代碼是在VS下跑的。


#include<stdio.h>

#include<stdlib.h>


void bug()

{

system("reboot");//重啟

exit(0);

}


int stack_test(int a, int b)

{

     

printf("before write :0x%x\n", b);

int *p = &a;

p++;

*p = 0xdddd;

printf("after write :0x%x\n ", b);

int c = 0xcccc;

return c

}


int main()

{

int a = 0xaaaa;

int b = 0xbbbb;

int ret = stack_test(a, b);

printf("you should run here\n");

return 0;

}

執行上面的代碼,結構為:

函數調用棧


結構分析:

函數調用棧執行int *p = &a,此時p指向了&a,當進行p++時,此時p指向了&b,然后*p = 0xdddd,則把b內的值改為

0xdddd,所以write之后打印的是0xdddd。

當執行下面代碼:

#include<stdio.h>
#include<stdlib.h>
void bug()
{
        system("reboot");//重啟
        exit(0);
}
 
int stack_test(int a,int b)
{
        int* p=&a;
        p--;
        *p=bug;
        int c=0xcccc;
        return c;
}
int main()
{
        int a=0xaaaa;
        int b=0xbbbb;
        int ret=stack_test(a,b);
        printf("you should run here\n");
        return 0;
 }

當進行p--時,p指向了返回地址,然后執行*p = bug,會使返回地址的內容變為bug的ebp,所以當stack_test函數執行完后,不會執行main函數中的printf,而是跑到bug函數中去,會導致關機。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

同仁县| 湘阴县| 卫辉市| 堆龙德庆县| 龙海市| 大英县| 光泽县| 潍坊市| 兴义市| 班玛县| 合水县| 清水河县| 义乌市| 石狮市| 永吉县| 扎鲁特旗| 宁南县| 宜兴市| 佛学| 始兴县| 苏尼特左旗| 嘉义市| 石景山区| 开原市| 临泉县| 南京市| 高邑县| 镇巴县| 民县| 项城市| 双牌县| 武义县| 阳原县| 曲靖市| 云霄县| 新乐市| 邹平县| 子洲县| 阿拉善左旗| 余庆县| 麻栗坡县|