whois
스택(Stack) 본문
· 스택(Stack)
"LIFO(Last In First Out) 구조를 가지는 자료구조이다."
스택 관련 알아야 할 지식
1. 함수 호출 시 파라미터가 들어가는 방향
2. 리턴 주소
3. 지역 변수 사용
함수 안에서 스택을 사용할 때 다음과 같은 코드가 엔트리 포인트에 생성된다.
push ebp
mov ebp, esp
sub esp, 50h
① ebp 레지스터를 스택에 넣는다.
② 현재 esp 값을 ebp에 넣는다.
③ esp에서 50h만큼 빼서 공간을 확보한다.
[그림 1] 함수 프롤로그
좀 더 구체적인 동작 과정을 설명하기 위해 그림 1을 그려봤다. 첫 번째 push ebp를 하게 된 후에 그림은 노란색으로 표시 된 것과 같다. EBP는 Base Pointer를 가리키며, ESP는 현재 스택의 최상단 EBP 위쪽을 가리킨다. 두 번째 mov ebp, esp 명령을 수행하게 되면 ESP는 변동이 없으나, EBP는 ESP 값을 받아 4byte만큼 옮겨지게 된다. 세 번째, sub esp, 50h를 수행하게 되면 50H만큼의 공간이 생성되게 되고 ESP는 자연스럽게 스택의 젤 끝으로 이동하게 된다.
'Hacking > Reverse Engineering' 카테고리의 다른 글
함수 호출 (0) | 2018.01.04 |
---|---|
필수 어셈블리 명령어 (0) | 2018.01.04 |
레지스터 (0) | 2018.01.03 |
어셈블리 (0) | 2018.01.03 |
리버스 엔지니어링 개요 (0) | 2017.12.27 |
Comments