리버싱 엔지니어링/리버싱 핵심 원리
5 스택
흰싸라기
2022. 2. 6. 22:57
5. 스택
5.1.1 스택 메모리의 역할
- 함수 내의 로컬 변수 임시 저장
- 함수 호출 시 파라미터 전달
- 복귀 주소(return address) 저장
5.1.2 스택의 특징
- 스택 포인터(ESP)의 초기 값은 Stack Bottom에 가깝다
- PUSH 명령에 의해 값이 추가되면 스택 포인터는 Stack Top을 향해 움직이고, POP 명령에 의해 스택에서 값이 제거되면 스택 포인터는 Stack Bottom을 향해 움직인다.
5.1.3 스택 동작 예제
1) 초기 상태의 스택
- ESP : 19FF74
2) PUSH 100
- ESP : 19FF70, 4바이트 줄어듦
- ESP가 위쪽 방향으로 이동
- ESP가 가리키는 주소 19FF70에 100이 저장됨
3) POP EAX
- ESP : 19FF74, 4바이트 증가
- ESP가 아래 방향으로 이동
- 스택 초기상태와 동일해짐
정리
: 스택에 값을 입력하면 ESP는 감소하고, 스택에서 값을 꺼내면 ESP는 증가한다.