공부중/시스템 해킹

메모리 구조 이해하기

silver surfer 2024. 3. 2.

** 기본적인 메모리 구조

0부터 2^32-1 (32bit 체제) 까지 영역이 나뉘어져있다. (64bit 체제도 32bit 체제와 비슷하기 때문에 이걸로 공부해도 괜찮음)

Stack : 시스템 해킹하면서 가장 많이 듣게될 영역 (First In Last Out), 함수의 정보 포함(지역변수의 내용도 포함)

ex)

int sum(a,b) 
{
	return a+b;
}

a와 b는 sum 함수 안에서만 사용되는 지역변수  

어떠한 함수를 호출할 때마다 스택에 정보가 쌓인다. 여기서 가장 많은 취약점이 노출된다 (ex. BufferOverFlow)

 

▶ Heap : 동적으로 할당되는 변수의 데이터들이 위치하는 공간

흔히 C언어에서 malloc()으로 동적할당할 수 있는데 이런걸로 할당된 변수들은 힙에 저장됨

 

▶ BSS :  프로그램에서 사용될 변수들이 실제로 위치하는 영역 (초기화가 이루어지지 않은 변수)

▶ Data : 초기화가 이루어진 변수

▶ Text : 실제로 작성한 소스코드가 들어가는 공간(모두 기계어)

 

 

위 코드처럼 Data 부분에 Hello world가 들어간다.

Text 부분에는 한줄 한줄씩의 코드가 들어간다. 

댓글