1 概述
前面学习栈溢出/格式化字符串,不懂操作系统,不懂内存管理通过看看栈内存,还能勉强懂一点,前几天开始学习堆的漏洞利用,发现不懂是真的不懂,把exp摔到脸上都看不懂,这就是问题了,于是反复思量,决定还是要分几次把内存管理学习一下,这次先是最基础的内存布局吧
参考文章:
linux系统进程的内存布局
笔记:程序内存管理 .bss .data .rodata .text stack heap
2 内存布局
先把下面经典的图亮出来
2.1 案例源码
首先编写一个程序看看:
#include<stdio.h>
#include<malloc.h>
static char *data_str = "AAAAAAAAAAAAAA";
static char bss_str[10];
int main(int argc, char **argv){
static int data_int = 12345;
static int bss_int;
int stack_int = 67890;
char *stack_str = "BBBBBBBBBBBBBBBB";