利用缓冲区溢出来执行函数
2016-07-05 17:13
204 查看
首先用代码
#include "stdafx.h"
void overFlow()
{
while (1)
{
printf( "over flow!\n");
}
getchar();
}
int main()
{
int a[3] = { 0 };
return 0;
}
用VS查看反汇编代码
a[2]对应的地址为EBP-0xC
学过汇编我们知道,函数的返回地址保存在EBP+4中,因为a[2]为EBP-0xC,int占4个字节,所以a[6]能到达EBP+4处
修改代码后如图
执行结果如下
所以修改函数的反回地址能使程序执行我们想要执行的函数
#include "stdafx.h"
void overFlow()
{
while (1)
{
printf( "over flow!\n");
}
getchar();
}
int main()
{
int a[3] = { 0 };
return 0;
}
用VS查看反汇编代码
a[2]对应的地址为EBP-0xC
学过汇编我们知道,函数的返回地址保存在EBP+4中,因为a[2]为EBP-0xC,int占4个字节,所以a[6]能到达EBP+4处
修改代码后如图
执行结果如下
所以修改函数的反回地址能使程序执行我们想要执行的函数
相关文章推荐
- lua遍历table
- 【待重置】记忆化搜索思想
- webService三要素 SOAP、WSDL、UDDI
- 新生练习1(递推)
- 关于Java Final 修饰的局部变量,多线程可以访问
- Apache DbUtils 探秘
- 创建maven自定义archetype项目
- angularjs - 415 (Unsupported Media Type)
- Android 不同应用通过SharedPreference实现共享数据
- gulp自动添加版本号
- 3.3 DXC简介——HANA数据抽取和同步
- HDU 5710 Digit-Sum 数学杂题
- redis缓存数据需要指定缓存有效时间范围段的多个解决方案 Calendar+quartz
- eclipse最有用快捷键整理
- Go语言圣经(中文版)读书笔记
- java 产生指定范围的随机数
- iOS开发 自定义UIAlertController的样式
- sql server 备份失败[上加载的介质已格式化为支持 1 个介质簇,但根据指定的备份设备,应支持 2 个介质簇]
- windows下Redis编译安装
- Entity Framework Code-First(18):Turn off DB Initializer