您的位置:首页 > 编程语言 > C语言/C++

对Windows平台C程序内存分布研究及安全性分析

2016-05-17 22:05 274 查看

对Windows平台C程序内存分布研究及安全性分析

操作系统:windows

重点内容应用软件:Visual C++ 6.0 ;Visual Studio 2015;

操作过程

书写简单的程序,采取控制变量法对内存分布进行探索。

详细过程略。

部分代码

#include <stdio.h>
#include <stdlib.h>

int g_a = 0;
int g_b=0;
const int g_c = 0;
const int g_d = 0;
int g_e;
int g_f;
int g_g;
int(*f2)(void);
void fun(void)
{

}
int main()
{
int ma=0;
int mb=0;
char *heap = (char*)malloc(10);
char *heap2 = (char *)malloc(10);
char buf[4] = "abc";
void(*f)(void);
f = &fun;
return 0;
}


探索结果

内存方向: 低———————->高

分布情况: stack text init .bss heap

增长方向: <–stack |fixed | heap–>

安全分析

缓冲区溢出攻击原理1:数据内存地址的增长方向为由低向高,而栈的增长方向由高向低。通过对栈进行篡改,可导致执行特别代码(shellcode)。

缓冲区溢出攻击原理2:利用函数指针,可修改的函数可位于stack init .bss heap内。

防治方法:

限制输入数据的长度防止篡改程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息