메모리 구조 이해하기

 

 2^32 -1 즉 32비트로 보겠다

 

메모리에는 Stack Heap BSS(uninitialized) Data(initialized) Text(Code) 로 이루어져 있다

 

Stack 스택은 먼저 들어간 것은 나중에 나온다

 

우리가 함수를 호출할 때마다 스택에 정보가 쌓인다

 

스택은 기본적으로 함수의 대한 정보들을 포함하고 있고 함수의 지역변수들까지도 포함된다 

 

예를 들어

 

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

이 때 a와 b는 sum 함수 내에서만 사용이 가능한 지역변수라고 할 수 있다

 

그래서 이 함수를 호출 할 때마다 메모리 상에 있는 스택에 쌓이게 되는 것

 

이곳에서 가장 취약점이 노출이 되고 BOF공격도 실행할 수 있는 영역

 

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

 

흔히 C언어에서 malloc() 과 같이 동적 할당을 할 수 있는데 할당된 모든 변수들은 다 Heap 공간에 정의가 된다

 

BSS는 프로그램에서 사용될 변수들이 실제 위치하는 영역 이 변수들은 아직 초기화가 이루어지지 않은 변수들을 의미

 

Data는 초기화가 이루어진 변수

 

Text는 실제로 작성한 소스코드가 들어가는 공간

 

setction .data  

        msg db "Hello World" // Data영역

section .text 

        global_start

 

_start:

        mov rax, 1

        mov rdi, 1

        mov rsi, msg

        mov rdx, 12

        syscall

        mov rax, 60

        mov rdi, 0

        syscall

 

 

 

 

'Hacking > 시스템 해킹' 카테고리의 다른 글

공부(6)  (0) 2021.09.20
공부(5)  (0) 2021.09.20
공부(4)  (0) 2021.09.19
공부(2)  (0) 2021.09.19
공부(1)  (0) 2021.09.19

+ Recent posts