2021-11-07 · 1

[리버싱] 스택프레임이란..?

securityreversing

이 글은 작성된 지 2년이 넘었어요. 내용이 오래됐을 수 있어요.

스택 프레임(Stack Frame)이란?

What's the stack frame?


 스택 프레임(Stack Frame)이란 함수가 호출될 때, 그 함수만의 스택 영역을 구분하기 위하여 생기는 영역이다. 이 공간에는 함수와 관계되는 지역 변수, 매개변수가 저장되며, 함수 호출 시 할당되며 함수가 종료되면 소멸한다.

 함수가 호출되면 스택에는 함수의 매개변수, 호출이 끝난 뒤 돌아갈 반환 주소값, 함수에서 선언된 지역변수 등이 저장됩니다. 이렇게 스택영역에 차례대로 저장되는 함수의 호출 정보를 스택프레임(Stack Frame)이라고 합니다. 이러한 스택 프레임 덕분에 함수의 호출이 모두 끝난 뒤에, 해당 함수가 호출되기 이전 상태로 되돌아갈 수 있습니다.

1. 함수 프롤로그(Prolog)

push rbp, mov rbp, rsp

!> ****](https://eliez3r.github.io/post/2019/10/16/study-system.Stack-Frame.html)

push rbp를 이용하여 함수의 rbp를 스택에 저장합니다. 그리고 rsp를 rbp에 복사함으로써 rsp를 rbp주소로 설정합니다. rbp는 함수의 기준점으로 가타내므로, rbp를 기준으로 RET이나 argc, argv 함수의 지역변수 등의 위치를 쉽게 알 수 있다. ## 2. 함수 에필로그(Epilog) 함수 에필로그 자신의 함수가 끝나 다시 돌아갈 때 스택을 정리하는 과정입니다. 다시 원래 상태로 만드는 것 입니다. 옆에선 mov eax, 0x0   pop rbp , ret  를 사용하고 있는데 **le — study-system.Stack-Frame.html

https://blog.naver.com/hermet/56227646


원문: tistory — 2021-11-07 발행, 이 블로그로 이전됨.

댓글

댓글을 삭제할까요?

관련 글

[리버싱] 스택프레임이란..? · 나봄하랑