首页
社区
课程
招聘
[旧帖] [讨论]返回地址被覆盖 0.00雪花
发表于: 2009-8-5 15:34 929

[旧帖] [讨论]返回地址被覆盖 0.00雪花

2009-8-5 15:34
929
原帖链接:http://bbs.pediy.com/showthread.php?t=94975
在以上链接中有一道c语言的测试题:

1、如何在下面的test函数里加入代码可以使程序运行起来输入和输出的相等?
(环境是vc6Debug方式下)
#include<stdio.h>
void test()
{
  int t;
  scanf("%d",&t);
  在这里加入代码
}
void main()
{
  int m;
  test();
  printf("m=%d",m);
}

楼主当时发问:
在这里我有两个疑问想请教各位大牛:(vs2008 DeBug)

1.函数入口处sub  esp,0CCh和 sub    esp,0D8h 指令中的CC和D8和怎么计算出来的,保留这空间是做什么用途的?

2.我添加完代码之后可以把m的值置成我输入的值了,但怎么样才能消除“使用未初始化变量”的错误?

谢谢各位!
对于第一个问题,小弟认为他的ESP指针的作用是覆盖主函数的返回地址,因此在最后显示的值实际不是m的值,而是t的值,此时m与t仍然是不相等的,只要esp的值够大,便可以使程序发生错误,使得显示的值停留在t上,也就是用esp指针使程序发错误,显示的值是因为错误而停留在屏幕上的,而不是m的值,也不知道能不能这么理解,请明白的给说一下··另外哪位可以给个邀请码吗···

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//