可能重複:
how to skip a line doing a buffer overflow in c緩衝區溢出(返回地址)
我拆開使用RHEL5上的gdb main()
功能。基本上我想要將代碼中的返回地址更改爲其他指令。
場景:
function(int a,int b)
{
char buffer[16];
//some operations here..
}
int main()
{
int x = 12;
int y =13;
int p ;
function(x,y);
p = 100;
printf("%d",p);
}
我想跳過P = 100,想跳就printf的電話! 在GDB中我檢查函數調用的地址。 > 0x080 .....東西 -
something --> 0x0804827b
爲main()
和function()
地址範圍。
但在程序中,當我嘗試使用&a
獲取變量的地址時,十六進制地址看起來像0xbfeca ...。
爲什麼這麼說?我沒有得到這個原因,所以我甚至無法獲取返回地址或更改返回地址。我應該如何繼續?可能是什麼原因?
也許** [這個答案](http://stackoverflow.com/questions/5280789/how-to-skip-a-line-doing-a-buffer-overflow-in-c/5571224#5571224)* * to * [如何跳過在c中執行緩衝區溢出的行](http://stackoverflow.com/q/5280789/203667)*可能有些用處。 – jschmier 2011-04-20 18:35:05