Reversing/리버싱 핵심 원리
[리버싱 핵심 원리] 5장, 스택(Stack)
Y06
2020. 11. 7. 17:48
05, 스택(Stack)
: 차곡차곡 쌓여진 데이터를 의미
[ 스택의 특징]
- 메모리의 데이터들을 효율적으로 다루기 위해 고안된 데이터 참조 방식 중 하나
- 가장 먼저 입력된 데이터가 가장 아래쪽에 쌓이고, 나중에 입력된 데이터는 그 위에 쌓이게 되는 구조를 가진다
( FILO(First in Last out) 구조)
- 구조상 특징이 마치 더미를 쌓아 올린 모습과 흡사
- 가장 먼저 처리해야 될 것을 가까운 곳에 둔다.
- push: 스택에 새로운 자료 추가 / pop: 스택에 저장된 값을 뺌
- TOP: 스택에 쌓인 데이터의 가장 높은 위치의 메모리 주소 값(실제로는 가장 낮은 주소 값) - 기준이 되는 위치
- Bottom: 스택에 쌓인 데이터의 가장 낮은 위치의 메모르 주소 값 (실제로는 가장 높은 값)
- 보통 우리가 사용하는 스택은 시스템 스택이라고 한다. 시스템 스택의 기본 데이터 크기는 프로그램의 레지스터의 크기와 같다.
- 현재 32bit 프로그램을 기준으로 하고 있기 때문에 시스템 스택 데이터의 기본 크기는 32비트(4바이트)
[ 프로세스에서 스택의 역할]
1. 함수 내의 로컬 변수 임시 저장
2. 함수 호출 시 파라미터 저장
3. 복귀 주소(return address) 저장