【逆向学习记录】linux内存管理-内存布局

本文主要探讨了Linux操作系统中的内存管理,重点介绍了内存布局,包括text段、data段(包括rodata子段)、Bss段以及堆和栈段。通过案例源码和汇编代码的分析,阐述了不同段的作用和常量数据在rodata段的存储方式。对于嵌入式系统开发者,了解这些内存管理基础知识至关重要。
摘要由CSDN通过智能技术生成

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";
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值