对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内。
防治方法:
限制输入数据的长度防止篡改程序。
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何重装TCP/IP协议
- Windows 8 官方高清壁纸欣赏与下载
- 谁是桌面王者?Win PK Linux三大镇山之宝
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows Clang开发环境备忘
- 从Windows系统下访问Linux分区相关软件
- 如何写好 C main 函数
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows下搭建本地SVN服务器
- 使用Windows原生命令一键清空剪贴板
- 利用开源软件打造自己的全功能远程工具
- Windows 8虚拟机不能全屏的解决方法
- Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得
- Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得
- 微软镜像下载
- windows server域用户提升到本地更高权限组中的方法