-
[System Security] 4.1 리눅스 프로세스 주소공간Security/System Security 2021. 4. 5. 16:02
프로세스의 구조
변수 종류별 주소공간
- 초기화된 전역 변수 : .data
- 초기화되지 않은 전역 변수 : .bss
- 초기화되지 않은 로컬 변수 : .data
- 초기화된 로컬 변수 : stack
- 초기화되지 않은 static 로컬변수 : .data
- 초기화된 static 로컬변수 : .bss
static 변수의 특징
static 로컬 변수 : 외부 파일에서 참조할 수 없다
static 전역 변수 : 한 번 생성되면 프로그램이 종료될 때 없어진다.
배열 주소공간
global_char_arr_1 : 초기화되지 않은 전역변수 (.bss)
global_char_arr_2 : 초기화된 전역변수 (.data)
local_char_arr_1 : 초기화되지 않은 로컬변수 (stack)
local_char_arr_2 : 초기화된 로컬변수 (stack)
문자열 주소공간 확인
Hi, Array : Write가 불가능한 객체이므로 .rodata에 저장됨
My : 초기화된 전역변수, 초기화시 입력된다 (.data)
World : 초기화된 지역변수, text에 인코딩되어 저장된다. main 실행시 text에서 stack으로 가져온다
포인터 주소공간
global_char_ptr_1 : 초기화하지 않은 전역변수 (.bss)
global_char_ptr_2 : 초기화한 전역변수 (.data)
local_char_ptr_1 : 초기화하지 않은 지역변수 (stack)
local_char_ptr_2 : 초기화한 지역변수 (stack)
문자열 주소공간
My, World! : .rodata에 위치
Hi, Pointer : .rodata에 위치하다가 Heap으로 복사
#include<stdio.h> int global_num_1; int global_num_2 = 100; static int global_num3; static int global_num4 = 200; char global_char_arr_1[10]; char global_char_arr_2[] = "My"; char *global_char_ptr_1; char *global_char_ptr_2 = "My2"; int main() { int local_num_1; int local_num_2 = 300; static int local_num3; static int local_num4 = 400; char local_char_arr_1[10]; char local_char_arr_2[] = "My3"; char* local_char_ptr_1; char* local_char_ptr_2 = "My4"; return 0; } /* My : .data My2 : .rodata My3 : .text에 인코딩되어 있다가 디코딩되어 stack에 저장 My4 : .rodata에 존재 global_num_1 : .bss global_num_2 : .data global_num_3 : .bss global_num_4 : .data global_char_arr_1 : .bss global_char_arr_2 : .data global_char_ptr_1 : .bss global_char_ptr_2 : .data, .rodata에 있는 My2의 주소값을 가진다 local_num_1 : stack local_num_2 : stack local_num_3 : .bss local_num_4 : .data local_char_arr_1 : stack local_char_arr_2 : stack local_char_ptr_1 : stack local_char_ptr_2 : stack */
'Security > System Security' 카테고리의 다른 글
[System Security] 4.3 Segment Protection (0) 2021.04.06 [System Security] 4.2 프로세스 생성 관리 (0) 2021.04.05 [System Security] 3.5 80x86 동작 모드와 부팅 (0) 2021.04.04 [System Security] 3.4 Virtual Memory 관리 (0) 2021.04.04 [System Security] 3.3 Register 구조 (0) 2021.04.04