【发布时间】:2011-08-09 09:56:37
【问题描述】:
我在 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 中,我检查了函数调用的地址。
something --> 0x0804827b
main() 和 function() 的地址范围 --> 0x080.....某事。
但在程序中,当我尝试使用 &a 获取变量地址时,十六进制地址看起来像 0xbfeca... 的东西。
为什么会这样?我不明白这背后的原因,所以我什至无法获取返回地址或更改返回地址。我应该如何进行?可能是什么原因?
【问题讨论】:
标签: c assembly stack buffer-overflow