One's Knowledge

스택 프레임(Stack Frame) 본문

리버싱/이론 정리

스택 프레임(Stack Frame)

coveter 2025. 6. 1. 12:08
SMALL

스택 프레임 : 함수 호출시 생성되는 메모리 블록

 

프롤로그 : 함수 시작시 실행되는 코드 (스택 프레임 설정)

에필로그 : 함수 종료시 실행되는 코드 (스택 프레임 해제)

 

Stack

 

함수호출코드

push 매개변수                                   // 함수호출규약에 따라 다르지만 EBP+8부터 인수1, EBP+12 인수2...

call 함수 (push return address)         // call 함수 하면 함수가 끝나고 다음 주소를 push

 

프롤로그

push EBP                                          // 함수가 끝나고 EBP를 다시 이전 EBP로 돌려줘야하기 떄문에 백업

MOV EBP, ESP                                 // EBP를 새로 스택 윗부분으로 초기화

SUB ESP, n                                       // ESP에 n만큼 공간 할당(지역변수 공간 확보)

 

에필로그

MOV ESP, EBP                                 // 함수 끝날때 ESP를 EBP로 초기화(지역변수 공간 제거, EBP로 이동)

POP EBP                                          // EBP가 백업해뒀던 EBP로 초기화(이전 EBP로 초기화)

ret (POP EIP)                                   // Return address로 이동

 

 

 

LIST

'리버싱 > 이론 정리' 카테고리의 다른 글

PE 파일 주소 개념 정리  (0) 2025.06.01
PE FILE FORMAT  (0) 2020.07.26
stolen byte  (0) 2020.07.26
패킹  (0) 2020.07.25
레지스터  (0) 2020.07.25