取个名字是真的难 2017-07-21 10:09 采纳率: 50%
浏览 2204

c++关于缓冲区溢出问题

我在构造缓冲区溢出的时候,使fun()函数的返回到main()的地址被自己的函数地址给填充掉,设想的情况是无限执行此函数并输出1,测试结果是只输出了部分1,然后就结束了,为什么?
#include
using namespace std;
void fun()
{
cout<<1<<" ";
int str[2];
str[3]=(int)fun;//使esp+4处的返回地址被本函数地址给填充掉
return;
}
int main()
{
cout<<"start"<<endl;
fun();
cout<<"end"<<endl;
return 0;
}
实验环境:windows xp professional vc++6.0
图片说明

  • 写回答

2条回答 默认 最新

  • luojc714 2017-07-21 11:54
    关注

    直接看C++源码不太看的出来,编译器最终生成的指令未必和你预想的一致,你可以试试看这段代码编译出来的汇编,这样更容易看出问题出在哪。

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab用simulink求解一个二阶微分方程
  • ¥30 matlab解优化问题代码
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?