리버싱/모두를 위한 리버싱 지침서 요약

1.6 함수 프롤로그와 에필로그

상세 2022. 5. 18. 21:59

아직 초보라 오류가 있을 수 있습니다! 오류 수정은 언제나 환영입니다.


 

함수 프롤로그의 예 (32bit)

1 : push ebp

2 : mov ebp, esp

3 : sub esp, X

 

1행 : ebp레지스터의 값을 스택에 저장한다.

2행 : ebp레지스터의 값을 esp의 값으로 설정

3행 : 지역변수용 스택 공간 할당

 

이때 ebp는 지역 변수나 인자에 접근할 때 사용한다.

 

함수 에필로그의 예 (32bit)

mov esp, ebp

pop ebp

ret 0

는 아마 밑의 작동방식으로 이해하면 될 것 같다. 예전에 대체 이게 뭐 하는 거지? 했는데 직접 스택을 그려보면서

이해하니 이해가 쉽다.