05, 스택(Stack)
: 차곡차곡 쌓여진 데이터를 의미
[ 스택의 특징]
- 메모리의 데이터들을 효율적으로 다루기 위해 고안된 데이터 참조 방식 중 하나
- 가장 먼저 입력된 데이터가 가장 아래쪽에 쌓이고, 나중에 입력된 데이터는 그 위에 쌓이게 되는 구조를 가진다
( FILO(First in Last out) 구조)
- 구조상 특징이 마치 더미를 쌓아 올린 모습과 흡사
- 가장 먼저 처리해야 될 것을 가까운 곳에 둔다.
- push: 스택에 새로운 자료 추가 / pop: 스택에 저장된 값을 뺌
- TOP: 스택에 쌓인 데이터의 가장 높은 위치의 메모리 주소 값(실제로는 가장 낮은 주소 값) - 기준이 되는 위치
- Bottom: 스택에 쌓인 데이터의 가장 낮은 위치의 메모르 주소 값 (실제로는 가장 높은 값)
- 보통 우리가 사용하는 스택은 시스템 스택이라고 한다. 시스템 스택의 기본 데이터 크기는 프로그램의 레지스터의 크기와 같다.
- 현재 32bit 프로그램을 기준으로 하고 있기 때문에 시스템 스택 데이터의 기본 크기는 32비트(4바이트)
[ 프로세스에서 스택의 역할]
1. 함수 내의 로컬 변수 임시 저장
2. 함수 호출 시 파라미터 저장
3. 복귀 주소(return address) 저장
'Reversing > 리버싱 핵심 원리' 카테고리의 다른 글
[리버싱 핵심 원리] 17장, 실행 파일에서 .reloc 섹션 제거하기 (0) | 2020.11.15 |
---|---|
[리버싱 핵심 원리] 16장, Base Relocation Table (0) | 2020.11.07 |
[리버싱 핵심 원리] 4장, IA-32 Register 기본 설명 (0) | 2020.11.07 |
[리버싱 핵심 원리] 3장, 리틀 엔디언 표기법 (0) | 2020.11.07 |
[리버싱 핵심 원리] 8장, abex' crackme #2 분석 (0) | 2020.11.07 |