System Hacking

메모리 구조 (Memory Architecture)

jir4vvit 2020. 7. 2. 15:27
출처 : 동빈나님 유튜브 youtu.be/TxWOaKE5w_s

유튜브를 보며 공부하던 중 두고두고 복습이 필요할 것 같아 정리를 하려고 한다..

 


구체적인 하나의 프로그램이 실행된 형태인 프로세스는 어떠한 메모리 구조를 가지게 될 지 알아보자.

기본적으로 실제 메인 메모리에서 하나의 세그먼트는 아래의 구조를 가지고 있다.

 

세그먼트(segment) : 하나의 프로세스를 묶은 것

              실행 시점에 실제 메모리의 어느 위치에 저장될 지 결정된다.

 

Stack, Heap, BSS, Data, Text로 나뉘어져 있다.

 

- Text : 실제로 우리가 작성한 소스코드가 들어간다. 프로그램을 실행하게 되면 여기에 있는 어셈블리 코드가 한 줄 한 줄 읽히면서 프로그램이 구동된다.

 

- Data : 실제로 초기화가 이루어진 변수가 들어간다. 

 

- BSS : 초기화가 이루어지지 않은 변수가 들어간다.

- Heap : 동적으로 할당되는 공간이다. 예를들어 C언어 같은 경우, 동적으로 배열을 할당해주면 사용 후 메모리 해제를 반드시 시켜줘야 한다. 여기서 메모리가 힙 영역이다.

 

- Stack : 함수의 파라미터 값, 반환 값, 지역변수 등의 데이터를 담고 있다. 함수를 호출할 때마다 이 스택 영역에 쌓이게 된다. 실제로 이 부분에서 취약점이 많이 발생이 되고 버퍼오버플로우도 자주 발생이 된다. 

 

 

 

jiravvit.tistory.com/entry/Buffer-Overflow-8086-Memory-Architecture

 

[Buffer Overflow] 8086 Memory Architecture

참고문헌 제목 : 해커 지망생들이 알아야할 Buffer Overflow 기초 작성자 : 달고나 출처 : www.wowhacker.com * 사진과 글은 위 문서를 참고하였습니다. 8086? : 인텔사에서 개발한 16비트 마이크로프로세서이

jiravvit.tistory.com

자세한 건 위 포스팅을 참고하면 될 것 같다..

 

다음 포스팅에서는 취약점이 많이 발생이 되는 Stack 영역에 대해 더 알아보도록 하겠다.