1. TEXT (CODE) 영역
- 유저가 작성한 소스코드가 들어가는 영역
- 실행할 프로그램의 코드가 저장되는 영역으로 바이너리화되어 저장
- 실행 파일을 구성하는 명령어들이 올라가는 메모리 영역으로 함수, 제어문, 상수 등이 지정
2. DATA 영역
- 전역변수와 static 변수가 할당되는 영역
- 프로그램의 시작과 동시에 할당되며 프로그램이 종료되어야 메모리가 소멸
3. BSS 영역
- 프로그램에서 사용될 변수들이 실제로 위치하는 공간
- 변수 선언 순서에 따라 주소값이 커지는 구조
4. HEAP 영역
- 동적으로 할당되는 변수의 데이터들이 위치하는 공간
- malloc 등의 함수 이용
- 프로그래머가 할당 및 해제하는 메모리 공간
- 장점 : 프로그램에 필요한 개체의 개수나 크기를 미리 알 수 없는 경우 사용 가능
- 단점 : 할당 작업이나 해제 작업으로 인한 속도 저하
5. STACK 영역
- 함수에 대한 정보를 포함
- 함수 안에 포함되어 있는 지역 변수의 내용들을 포함
- 프로그램이 자동으로 사용하는 임시 메모리 영역
- 함수 호출 완료 시 사라짐
- 장점 : 낭비되는 공간이 없고 하나의 명령만으로 조작 가능
- 단점 : 한계를 초과하도록 삽입할 수 없음 ( 유연성 부족 )
※ HEAP과 STACK 영역은 사실 같은 공간을 공유하는데, HEAP은 메모리 위쪽, STACK은 메모리 아래쪽부터 할당되는 방식
→ 각 영역이 상대 공간을 침범하는 일이 발생할 수 있고, 이를 각각 HEAP OVERFLOW, STACK OVERFLOW라고 한다.
'2021-1 STUDY > Pwnable Study' 카테고리의 다른 글
Week05_BOF (0) | 2021.05.19 |
---|---|
Week04_GDB 분석 (0) | 2021.05.12 |
Week03_collision (0) | 2021.05.05 |
Week03_setuid (0) | 2021.05.05 |
Week02_Pwntools (0) | 2021.04.28 |