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

+ Recent posts