作者ledia (下班後才下棋)
看板C_and_CPP
標題Re: [問題] Buffer overflow 和 Instruction address
時間Thu Dec 9 10:21:00 2010
先講一下 main
int main(int argc, char **argv[]) {
int x;
x = 0;
func(argv[1]);
func(argv[1]);
func(argv[1]);
x = 1;
printf("x is 1\n");
printf("x is 0\n");
}
假設現在改成這樣
那麼每一次 function call, 在 stack 上的 return pointer
應該都是不一樣的吧 ?
這邊可理解嗎 ?
但是每次呼叫所有其他的條件都一樣
如果你能夠把超出 array 範圍之外, stack 上的東西都印出來
是不是能觀察到些什麼 ?
知道了 return pointer 存在哪
每次 increment 是多少之後
把 main 復原, 接下來你就可以用你的 ret 指標改改看
對他加上不同的 increment 是不是有你預期的行為
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.51