** 기본적인 메모리 구조

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 부분에는 한줄 한줄씩의 코드가 들어간다.
'공부중 > 시스템 해킹' 카테고리의 다른 글
| [Dreamhack] Linux memory Layout (0) | 2024.09.09 |
|---|---|
| [Dreamhack]x86-64 아키텍처 (0) | 2024.09.09 |
| 윈도우 환경 구축/WSL2 (0) | 2024.07.13 |
| 리눅스<>로컬 pc ssh 연결 (0) | 2024.06.30 |
| 레지스터의 용도와 시스템콜 이해하기 (0) | 2024.02.02 |
댓글