Jiyong's STUDY

[기초] 스택프레임 구조 본문

보안/리버싱, 어셈블리

[기초] 스택프레임 구조

Kingjiyong 2020. 7. 17. 15:05

함수 진입 직후
프롤로그
에필로그

함수 진입때의 EBP는 00D9FCB0었고 프롤로그 이후 바뀌었으나 에필로그 이후 다시 00D9FCB0으로 돌아왔다.

 

push ebp로 함수 진입시의 ebp값을 스택에 저장한 이후에 mov ebp, esp로 ebp에 esp의 값을 저장하고

함수가 끝날 때 esp와 ebp가 원상복구 되면서 함수 진입 직전의 주소를 기억하며 돌아갈 수 있는 것이다. 

 

main 함수에서 f1 함수로 진입하여 연산 후 리턴하여 main 함수로 돌아가는 구조인데,

esp 하나뿐이면 esp는 함수 안에서 계속해서 바뀌기 때문에 다시 돌아갈 수 없다.

그렇기에 ebp에 저장을 해둔 뒤에 돌아갈 수 있는 것이다. 

쉽게 함수는 자신만의 공간을 가지게 되며, 이를 스택프레임이라 한다.

'보안 > 리버싱, 어셈블리' 카테고리의 다른 글

함수 스택 규약  (0) 2020.07.20
calc.exe 핸드레이  (0) 2020.07.17
[기초] 리틀 엔디언  (0) 2020.07.17
[기초] Hello World 리버싱 문자열 패치  (0) 2020.07.16
[기초] 스택 자료구조의 ADT  (0) 2020.07.16