[C/C++]初识缓冲区溢出
2014-10-03 12:09
411 查看
摘要: 堆缓冲区溢出的初步了解
之前在网上看到的,自己后来试着写了一下,算是对缓冲区溢出的初步了解。
运行结果:
the param is 10
this is over flow function
(在WIN7 + VS运行,系统会提示异常,但结果确实运行出来了)
之前在网上看到的,自己后来试着写了一下,算是对缓冲区溢出的初步了解。
#include <stdio.h> #include <stdlib.h> //溢出之后调用的函数 void OverFlowFun() { printf("this is over flow function\n"); } //普通函数 void NormalFun(int iParam) { int iParamAddress = (int)&iParam; //参数地址 //函数调用结束的返回地址 //函数调用首先将参数压栈,通过参数地址可以获取函数返回地址 //将该指针指向的内存内容修改为OverFlowFun函数指针,NormalFun函数调用结束后会调用OverFlowFun函数 int iReturnAddress = iParamAddress - 4; int iOverFlowFunAddress = (int)OverFlowFun; int* pAddress = (int*)iReturnAddress; *pAddress = iOverFlowFunAddress; //将返回地址修改为溢出函数的地址 printf("the param is %d\n", iParam); } int main() { NormalFun(10); return 0; }
运行结果:
the param is 10
this is over flow function
(在WIN7 + VS运行,系统会提示异常,但结果确实运行出来了)
相关文章推荐
- 初识 Embedded Visual C++
- 缓冲区溢出还是问题吗?C++/CLI安全编码
- C++STL&GP学习后记——初识STL
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest
- c++ 11 标准初识
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest
- 网摘——初识C++中的虚函数
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest
- 缓冲区溢出还是问题吗?C++/CLI安全编码
- 【转】玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest
- Google C++ Testing Framework之初识
- 【转】玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest
- C++字符串拷贝与缓冲区溢出
- 缓冲区溢出还是问题吗?C++/CLI安全编码
- 初识C++
- 初识 Embedded Visual C++ (转)
- 初识C++标准模板库STL
- 初识c++
- [c++]初识c++钩子