스택(stack) 스택은 로컬 변수 저장, 함수 파라미터 전달, 복귀 주소 저장 등의 다양한 용도로 사용된다. 디버깅 할 때 스택 메모리를 확인하는 일이 맹무 많기 띠ㅐ문에 스택의 동작 원리에 대해 잘 알아두면 디버깅에 큰 도움이 된다.
스택의 역할
1. 함수 내의 로컬변수 임시 저장
2. 함수 호출 시 파라미터 전달
3. 복귀 주소(Return Address) 저장
스택의 특징
일반적으로 스택 메모리는 PUSH를 통해 메모리에 추가되면 스택 포인터는 위로 올라가고 POP 명령을 통해서 스택에서 제거되면 아래쪽으로 움직인다. 말그대로 쌓는다고 생각하면 생각하면 편하다.
스택은 스택 포인터가 초기값은 스택 메모리 아래쪽에 있다는 것을 알아두자
'리버스 엔지니어링' 카테고리의 다른 글
abex' 2nd crackme 분석 (0) | 2018.01.08 |
---|---|
abex' crackme#1 분석 (0) | 2018.01.04 |
IA-32 Register 기본 설명 (0) | 2018.01.04 |
리틀 엔디언 표기법 (0) | 2018.01.04 |
Hello World 문자열 패치 (0) | 2018.01.03 |