Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- webhacking
- TCP
- 소프트웨어
- System
- 드림핵
- hacking
- 비박스
- 리버싱
- 시스템
- 모의해킹
- 해킹
- Web
- 웹해킹
- Webhaking
- WarGame
- ftz
- reversing
- 순서도
- 네트워크
- bee-box
- 워게임
- XSS
- CodeEngn
- 소프트웨어보안
- 시스템해킹
- dreamhack
- network
- 네트워크보안
- 웹
- 알고리즘
Archives
- Today
- Total
Without a Break
[Dreamhack] Linux Memory Layout 본문
세그먼트
: 적재되는 데이터의 용도별로 메모리의 구획을 나눈 것
- 리눅스에서는 프로세스의 메모리를 크게 5가지의 세그먼트로 구분
- 운영체제가 메모리를 용도별로 나누면, 각 용도에 맞게 권한(읽기,쓰기,실행)을 부여할 수 있다는 장점이 있음
- 코드 세그먼트, 데이터 세그먼트, BSS 세그먼트, 힙 세그먼트, 스택 세그먼트로 구분
코드 세그먼트
: 실행 가능한 기계 코드가 위치하는 영역
- 텍스트 세그먼트(Text Segment)라고도 불림
- 읽기 권한과 실행 권한이 부여 => 프로그램이 동작하려면 코드를 실행할 수 있어야 하기 때문에
데이터 세그먼트
: 컴파일 시점에 값이 정해진 전역 변수 및 전역 상수들이 위치함
- 읽기 권한이 부여 => CPU가 세그먼트의 데이터를 읽을 수 있어야 하기 때문에
- 쓰기가 가능한 세그먼트(data 세그먼트)와 쓰기가 불가능한 세그먼트(rodata 세그먼트)로 분류
data 세그먼트 | 전역 변수와 같이 프로그램이 실행되면서 값이 변할 수 있는 데이터들이 위치 |
rodata 세그먼트 | 프로그램이 실행되면서 값이 변하면 안되는 데이터들이 위치 ex) 전역으로 선언된 상수 |
BSS 세그먼트
: 컴파일 시점에 값이 정해지지 않은 전역 변수가 위치하는 메모리 영역
- 개발자가 선언만하고 초기화하지 않은 전역 변수 등이 포함됨
- BSS 세그먼트의 메모리 영역은 프로그램이 시작될 때, 모두 0으로 값이 초기화 됨 => C 코드를 작성할 때, 초기화되지 않은 전역 변수의 값은 0이 됨
- 읽기 권한, 쓰기 권한 부여
스택 세그먼트
: 프로세스의 스택이 위치하는 영역
- 함수의 인자나 지역 변수와 같은 임시 변수들이 실행 중에 여기에 저장됨
- 스택 프레임 단위로 사용 => 스택 프레임은 함수가 호출될 때 생성되고, 반환될 때 해제
- 운영체제는 프로세스를 시작할 때 작은 크기의 스택 세그먼트를 먼저 할당하고 부족해 질 때마다 이를 확장해줌
- 스택이 확장 될 때, 기존 주소보다 낮은 주소로 확장되기 때문에 '아래로 자란다'라는 표현을 씀
- 읽기 권한, 쓰기 권한 => CPU가 자유롭게 값을 읽고 쓸 수 있어야 하기 때문에
힙 세그먼트
: 힙 데이터가 위치하는 세그먼트
- 실행 중에 동적으로 할당
- 리눅스에서는 스택 세그먼트와 반대 방향으로 자람
- c언어에서 malloc(), calloc() 등을 호출해서 할당받는 메모리가 이 세그먼트에 위치
- 읽기 권한, 쓰기 권한
'Pwnable > Dreamhack' 카테고리의 다른 글
[Dreamhack] Memory Corruption: Stack Buffer Overflow (0) | 2022.10.30 |
---|---|
[Dreamhack] Exploit Tech: Shellcode (0) | 2022.10.30 |
[Dreamhack] Tool: gdb (0) | 2022.10.12 |
[Dreamhack] Computer Architecture (0) | 2022.10.05 |
[Dreamhack] Tool: Enviroment Setup (0) | 2022.09.27 |