본문 바로가기
Reversing/리버싱 핵심 원리

[리버싱 핵심 원리] 5장, 스택(Stack)

by Y06 2020. 11. 7.

05, 스택(Stack)

: 차곡차곡 쌓여진 데이터를 의미

 

[ 스택의 특징]

 

- 메모리의 데이터들을 효율적으로 다루기 위해 고안된 데이터 참조 방식 중 하나

- 가장 먼저 입력된 데이터가 가장 아래쪽에 쌓이고, 나중에 입력된 데이터는 그 위에 쌓이게 되는 구조를 가진다

  ( FILO(First in Last out) 구조)

- 구조상 특징이 마치 더미를 쌓아 올린 모습과 흡사

- 가장 먼저 처리해야 될 것을 가까운 곳에 둔다.

- push: 스택에 새로운 자료 추가 / pop: 스택에 저장된 값을 뺌

- TOP: 스택에 쌓인 데이터의 가장 높은 위치의 메모리 주소 값(실제로는 가장 낮은 주소 값) - 기준이 되는 위치

- Bottom: 스택에 쌓인 데이터의 가장 낮은 위치의 메모르 주소 값 (실제로는 가장 높은 값)

- 보통 우리가 사용하는 스택은 시스템 스택이라고 한다. 시스템 스택의 기본 데이터 크기는 프로그램의 레지스터의 크기와 같다.

- 현재 32bit 프로그램을 기준으로 하고 있기 때문에 시스템 스택 데이터의 기본 크기는 32비트(4바이트)

 

 

[ 프로세스에서 스택의 역할]

 

1. 함수 내의 로컬 변수 임시 저장

2. 함수 호출 시 파라미터 저장

3. 복귀 주소(return address) 저장