- 스택


" 후입선출( LIFO : Last In First Out ) 방식에 의해 정보를 관리하는 데이터 구조. 스택에는 TOP이라고 불리는 스택의 끝부분에서 데이터의 삽입과 삭제가 발생한다. 즉, 스택에 데이터를 삽입하면 TOP 위치에 정보가 위치한다. 그리고 스택에서 정보를 읽어오려 하면 스택의 TOP 위치에 있는 정보가 반환된다. 따라서 스택에는 가장 나중에 삽입된 정보가 가장 먼저 읽히는 특징이 있다. "


컴퓨터 메모리상의 스택은 프로그램의 함수 내에서 정의되는데, 함수 종료와 동시에 사라지는 자동 변수가 저장되고 함수가 호출될 때 함수 내 로컬 변수 등이 저장되는 곳이다. 스택에 저장된 로컬 변수는 함수가 실행되는 동안만 존재하며 함수 실행이 종료되면 해당 변수들도 사라진다.


- 힙


" 프로그램의 실행 중 필요한 기억 장소를 할당하기 위해 운영체제에 예약되어 있는 기억 장소 영역. 프로그램 실행 중에 데이터를 저장하기 위해 기억 장소를 요청하면 운영체제는 힙에 존재하는 기억 장소를 프로그램에 할당한다. 프로그램에서는 기억 장치가 더 이상 필요 없으면 할당받았던 기억 장소를 운영체제에 반납하는데, 이때 운영체제에서는 반납된 기억 장소를 다시 힙에 돌려준다. 힙에 대한 기억 장소는 포인터를 통해 동적으로 할당되거나 반환되며 연결 리스트, 트리, 그래프처럼 동적인 특성이 있는 데이터 구조에서 널리 사용된다. "


힙은 프로그램이 실행될 때까지 미리 알 수 없는 가변적인 양의 데이터를 저장하기 위해, 프로그램의 프로세스가 사용할 수 있도록 예약되어 있는 메인 메모리의 영역이다. 


- 데이터 세그먼트


초기화된 데이터 세그먼트라고도 불리며, 초기화된 외부 변수나 static 변수 등이 저장되는 영역이다. 


- BSS 세그먼트


초기화되지 않은 데이터 세그먼트라고도 불리며, 프로그램이 실행될 때 0이나 NULL 포인터로 초기화되는 영역이다. 


- 텍스트 세그먼트


CPU에 의해 실행되는 머신 코드가 있는 영역으로, EIP가 다음에 실행하는 명령을 가리키고 있다.

'NCS보안3기 > 시스템 해킹' 카테고리의 다른 글

[System Hacking] Stack Buffer Overflow  (0) 2017.05.16
[System Hacking] CPU와 레지스터  (0) 2017.05.16
[System Hacking] 운영체제  (0) 2017.05.15
Posted by Imp3rio