五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

緩沖區(qū)溢出解密二

發(fā)布日期:2022-01-02 18:15 | 文章來源:源碼之家

而如果ESP被PUSH到堆棧,這是堆棧的表示:
|_parametre_I___| EBP 12
|_parametre II__| EBP 8
|_return adress_| EBP 4
|___saved_ESP___| EBP ESP
|_local var I __| EBP-4
|_local var II__| EBP-8
在上面的圖中,變量I 和II是傳遞給函數(shù)的參數(shù)。在返回地址和保存ESP之后,var I和II是函數(shù)的局部變量?,F(xiàn)在,如果我們總結(jié)所有我們所講的,當調(diào)用一個函數(shù)的時候:
1.我們保存老的堆棧指針,PUSH它到堆棧 2.我們保存下一個指令的地址(返回地址),PUSH它到堆棧。3.我們開始執(zhí)行程序指令。
當我們調(diào)用一個函數(shù)時,上面3步都做了。
讓我們在一個生動的例子中看堆棧的操作。
a.c :
void f(int a, int b, int c)
{
char z[4];
}
void main()
{
f(1, 2, 3);
} 用-g標志編譯這個從而能夠調(diào)試:
[murat@victim murat]$ gcc -g a.c -o a
讓我們看看這里發(fā)生了什么:
[murat@victim murat]$ gdb -q ./a
(gdb) disas main
Dump of assembler code for function main:
0x8048448 : pushl 雙
0x8048449 : movl%esp,雙
0x804844b : pushl $0x3
0x804844d : pushl $0x2
0x804844f : pushl $0x1
0x8048451 : call0x8048440
0x8048456 : addl$0xc,%esp
0x8048459 : leave
0x804845a : ret
End of assembler dump.
(gdb)
以上可見,main()函數(shù)中第一個指令是:
0x8048448 : pushl 雙
它支持老的指針,并把它壓入堆棧。接著,拷貝老的堆棧指針倒ebp寄存器:
0x8048449 : movl %esp,雙
因而,從那時起,在函數(shù)中,我們將用EBP引用函數(shù)的局部變量。這兩個指令被稱為”程序引入”。接著,我們反序PUSH函數(shù)f()的參數(shù)到堆棧中。
0x804844b : pushl $0x3
0x804844d : pushl $0x2
0x804844f : pushl $0x1
我們調(diào)用這個函數(shù):
0x8048451 : call 0x8048440
如我們已經(jīng)通過CALL調(diào)用解釋的那樣,我們PUSH指令addl $0xc,%esp的地址0x8048456到堆棧。函數(shù)RET調(diào)用后,我們加12或者十六進制中的0xc(因為我們推入3個參數(shù)到堆棧中,每一個分配了4個字節(jié)(整型))。 接著我們離開main()函數(shù),并且返回:
0x8048459 : leave
0x804845a : ret
好,在函數(shù)f()內(nèi)部發(fā)生了什么呢?
(gdb)
disas f
Dump of assembler code for function f:
0x8048440 : pushl 雙
0x8048441 : movl%esp,雙
0x8048443 : subl$0x4,%esp
0x8048446 : leave
0x8048447 : ret
End of assembler dump.
(gdb)
開始兩個指令都是一樣的。它們是程序引入。接著我們看a:
0x8048443 : subl $0x4,%esp
從ESP減去了4個字節(jié)。這是為局部變量z分配空間。記得我們定義它為char z[4]?它是一個4字節(jié)的字符數(shù)組。最后,在末尾,函數(shù)返回:
0x8048446 : leave
0x8048447 : ret
上一頁12 下一頁 閱讀全文

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關(guān)注
微信

關(guān)注官方微信
頂部