0x08048420 <+0>: push ebp
0x08048421 <+1>: mov ebp,esp
=> passwd.test 를 DeskTop 에서 gdb 로 읽어들인 결과 상위 두 줄에도 역시 push ebp 를 확인할 수 있다.
이전에 ebp, esp 가 뭐냐고 물어 보신다면 여기로 가셔서 해당 용어를 한 번 읽어보고 오시면 좋을 것 같습니다.
클릭이 귀찮은 분들을 위해 ebp, esp 만 간략하게 이야기 하자면
EBP (Extended Base Pointer)
- 따라서 EBP는 새로운 함수가 호출이거나 현재 실행중인 함수가 종료되어 리턴될 때마다 값이 달라짐
push ebp ? EBP 를 Stakc 에 쌓는다. 기존의 ebp 레지스터를 저장하는 것이다.
//이전 Stack의 Base 주소를 저장
=> passwd.test 를 DeskTop 에서 gdb 로 읽어들인 결과 상위 두 줄에도 역시 push ebp 를 확인할 수 있다.
이전에 ebp, esp 가 뭐냐고 물어 보신다면 여기로 가셔서 해당 용어를 한 번 읽어보고 오시면 좋을 것 같습니다.
클릭이 귀찮은 분들을 위해 ebp, esp 만 간략하게 이야기 하자면
EBP (Extended Base Pointer)
- 현재 스택에 가장 바닥을 가리키는 포인터 (함수 내에서 스택상에 저장된 값을 참조할 때 기준)
- 새로운 함수가 호출될 때마다 EBP 레지스터 값이 지금까지 사용했던 스택 꼭대기의 위에 위치하게 되고 새로운 Stack이 시작 - 따라서 EBP는 새로운 함수가 호출이거나 현재 실행중인 함수가 종료되어 리턴될 때마다 값이 달라짐
ESP (Extended Stack Pointer)
- 현재 스택의 가장 위에 들어있는 데이터를 가리키고 있는 포인터
- Intel CPU에서는 스택이 거꾸로(리틀엔디언) 자라므로 데이터가 하나 PUSH 될때마다 ESP 값은 감소
- ESP는 다음 번 DATA를 Push 할 위치가 아니라 다음에 POP 했을 때 뽑아낼 데이터의 위치를 가리 킴 push ebp ? EBP 를 Stakc 에 쌓는다. 기존의 ebp 레지스터를 저장하는 것이다.
//이전 Stack의 Base 주소를 저장
mov ebp, esp ? ESP 레지스터를 EBP 레지스터로 mov 함으로써 새로운 Base 를 설정하는 것이다.
//현재 Stack의 꼭대기를 새로운 스택의 Base 로 설정(새로운 Stack 시작)
//현재 Stack의 꼭대기를 새로운 스택의 Base 로 설정(새로운 Stack 시작)
push ebp
mov ebp, esp ?
(x86 환경에서) 새로운 함수를 호출하면 기존의 EBP 레지스터를 저장하고
ESP 레지스터를 EBP 레지스터로 mov함으로써 새로운 base를 설정하게 되는 것이다.
(**참고**)
- 함수를 새로 호출하게 되면 새로운 기준점을 설정하고 이전의 기준점은 저장해야 한다.
이전의 기준점을 저장해야 새로 호출된 함수를 종료하고 상위로 돌아갔을 때 다시기준점을 찾을 수 있다.
- ESP는 항상 스택의 최고점(주소값은 제일 낮은)을 가리키고 있다. 그 상황에서 esp보다 낮은 주소값에 있는스택상의 데이터들은 전혀 의미가 없다(정상적인 흐름에서)
ESP 레지스터를 EBP 레지스터로 mov함으로써 새로운 base를 설정하게 되는 것이다.
(**참고**)
- 함수를 새로 호출하게 되면 새로운 기준점을 설정하고 이전의 기준점은 저장해야 한다.
이전의 기준점을 저장해야 새로 호출된 함수를 종료하고 상위로 돌아갔을 때 다시기준점을 찾을 수 있다.
- ESP는 항상 스택의 최고점(주소값은 제일 낮은)을 가리키고 있다. 그 상황에서 esp보다 낮은 주소값에 있는스택상의 데이터들은 전혀 의미가 없다(정상적인 흐름에서)
'Computer Engineering > System' 카테고리의 다른 글
[ESPC2] 0x04 Return Address (0) | 2011.12.19 |
---|---|
[펌글] CPU Register(레지스터) 32bit (0) | 2011.12.18 |
[ESPC2] 0x03 (0) | 2011.12.17 |
[ESPC2] 0x02 (0) | 2011.12.16 |
[ESPC2] 0x01 (0) | 2011.12.14 |