亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
1234下一頁
最近訪問板塊 發(fā)新帖
查看: 27454 | 回復(fù): 34
打印 上一主題 下一主題

Linux堆棧溢出的經(jīng)典問題,歡迎圍觀!大牛前進(jìn) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-11-25 18:33 |只看該作者 |倒序瀏覽
原帖請見:http://blog.chinaunix.net/u/26166/showart.php?id=198375

我的環(huán)境是redhant 9 ,2.4的核。由于對Linux環(huán)境下堆棧的不熟悉,所以就這個例子,做了一些哦測試。
我的代碼:
  1. #include<stdio.h>

  2. void attack()
  3. {
  4. int attack=1;
  5. printf("hi,attacked!\n");
  6. }
  7. void yaya()
  8. {
  9. int yaya=1;
  10. printf("hi,yaya is my wife\n");
  11. }
  12. void foo()
  13. {
  14. int c_foo=1;
  15.   *(& c_foo +2)=(int)attack;
  16. }

  17. void main(){
  18. int a_main=1;
  19. a_main=(int)yaya;
  20. foo();
  21. }
復(fù)制代碼


然后,gdb下觀察結(jié)果:
main函數(shù)的反匯編:


yaya函數(shù)的反匯編


attack函數(shù)的反匯編:


foo函數(shù)的反匯編:


在main的堆棧中,a_main的值從1變?yōu)閥aya函數(shù)的入口地址0x08048347,而進(jìn)入foo函數(shù)之后,本來0xbfffe2cc存放的是main返回的地址0x0804839f,但是改為attack函數(shù)的入口地址0x08048328。
這樣就會導(dǎo)致main函數(shù)無法正常返回。


下面是我畫的堆棧示意圖,請指教:


從函數(shù)foo返回后,就進(jìn)入了attack函數(shù)了。

打印“hi,attacked!”成功!
接著,返回段錯誤。

我的問題:為什么yaya函數(shù)沒有執(zhí)行,就出現(xiàn)了段錯誤?
照文章中所述的,yaya函數(shù)的入口地址0x08048347已經(jīng)放在了0xbfffe2d4,為什么eip會訪問不到么?


[ 本帖最后由 GoldenSoldier 于 2009-11-26 09:17 編輯 ]

論壇徽章:
0
2 [報告]
發(fā)表于 2009-11-25 19:10 |只看該作者
上面有個圖發(fā)沖了
在下面修正一下:

論壇徽章:
0
3 [報告]
發(fā)表于 2009-11-25 20:49 |只看該作者
你cat /proc/$(pid)/maps看下0x08048347是屬于哪個段的

論壇徽章:
0
4 [報告]
發(fā)表于 2009-11-25 21:07 |只看該作者

回復(fù) #3 fox144215 的帖子

>>你cat /proc/$(pid)/maps看下0x08048347是屬于哪個段的

不懂你的意思。
0x08048347是屬于代碼段啊

論壇徽章:
0
5 [報告]
發(fā)表于 2009-11-25 21:56 |只看該作者
原帖由 GoldenSoldier 于 2009-11-25 18:33 發(fā)表
原帖請見:http://blog.chinaunix.net/u/26166/showart.php?id=198375

我的環(huán)境是redhant 9 ,2.4的核。由于對Linux環(huán)境下堆棧的不熟悉,所以就這個例子,做了一些哦測試。
我的代碼:
#include

void a ...


圍觀

你沒看懂 dump 出來的 main() 代碼嗎?

已經(jīng)很清楚了。

論壇徽章:
0
6 [報告]
發(fā)表于 2009-11-25 22:03 |只看該作者
原帖由 mik 于 2009-11-25 21:56 發(fā)表


圍觀

你沒看懂 dump 出來的 main() 代碼嗎?

已經(jīng)很清楚了。


本人菜鳥一個
請指教,我想知道為什么yaya函數(shù)沒有執(zhí)行

論壇徽章:
0
7 [報告]
發(fā)表于 2009-11-25 22:20 |只看該作者

回復(fù) #6 GoldenSoldier 的帖子

你這個 yaya() 地址并沒有接著 attack() 后面

論壇徽章:
0
8 [報告]
發(fā)表于 2009-11-25 22:26 |只看該作者
沒看明白0xbfffe2d0上面存放的0x42130a14是怎么來的, 從attack函數(shù)返回后應(yīng)該是跳到這個地址上了...
LZ代碼中, main函數(shù)里面的那句i=(int)yaya是怎么回事? 代碼還有蹊蹺?

[ 本帖最后由 kouu 于 2009-11-25 22:47 編輯 ]

論壇徽章:
0
9 [報告]
發(fā)表于 2009-11-26 08:42 |只看該作者
原帖由 mik 于 2009-11-25 22:20 發(fā)表
你這個 yaya() 地址并沒有接著 attack() 后面


謝謝你的關(guān)注!
你的意思是不是0xbfffe2d0地址里面不是yaya函數(shù)的入口地址?

論壇徽章:
0
10 [報告]
發(fā)表于 2009-11-26 08:47 |只看該作者
原帖由 kouu 于 2009-11-25 22:26 發(fā)表
沒看明白0xbfffe2d0上面存放的0x42130a14是怎么來的, 從attack函數(shù)返回后應(yīng)該是跳到這個地址上了...
LZ代碼中, main函數(shù)里面的那句i=(int)yaya是怎么回事? 代碼還有蹊蹺?


我也是初學(xué)者,我也不知道為什么0xbfffe2d0上面存放的0x42130a14,這是gdb你看到的。
從字面上來看,沒有和我函數(shù)的任何的局部變量產(chǎn)生關(guān)系(即 非任何局部變量的值),我懷疑是和printf有關(guān)的,猜得。

main函數(shù)里面的那句i=(int)yaya是筆誤,應(yīng)該是a_main= (int)yaya,不好意思。源代碼已經(jīng)修正過。慚愧
a_main= (int)yaya是為了讓yaya函數(shù)執(zhí)行而已。
但是沒想到中間還有個0xbfffe2d0(0x42130a14),不解。

[ 本帖最后由 GoldenSoldier 于 2009-11-26 09:19 編輯 ]
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP