리버싱/모두를 위한 리버싱 지침서 요약
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
는 아마 밑의 작동방식으로 이해하면 될 것 같다. 예전에 대체 이게 뭐 하는 거지? 했는데 직접 스택을 그려보면서
이해하니 이해가 쉽다.