해커스쿨lob하고 있는데 아래 사이트 링크...


https://d4m0n.tistory.com/76



















1. main 함수에서 p라는 함수를 실행 (push eip를 하여서 다음 실행주소를 -4공간에 저장 (이것이 ret 이다))

----------

ret

---------- <-- esp, ebp


2. push ebp를 하여서 -4 공간에 처음의 ebp주소를 넣어줌 (이것이 sfp 이다)

----------

ret

---------- <-- ebp

sfp[처음 ebp의 주소]

---------- <-- esp


sfp와 ebp가 어떻게 상호작용하는지 정확히 이해가 안 간다...

"처음 ebp의 주소 == sfp"라고 수학공식 암기하듯이 외우면 되기는 되는데

코드보고 레지스터나 스택의 구조가 어떻게 바뀌면서

"처음 ebp의 주소 == sfp"라는 공식이 성립이 되는지 근본적인 이유를 이해하고 싶음...