-
BOF 준비운동 (4)Wargame Site/BOF 2019. 4. 23. 13:53
STEP8 > Epilogue
자 이번엔 특정 프레임의 수행이 끝난 뒤, Stack 을 정리해주는 과정을 공부해보자.
Epilogue 는 leave 와 ret 로 이루어져있고, 이과정을 풀어서 어셈블리어로 표기하면 다음과 같다.
MOV ESP, EBP
POP EBP
POP EIP
JMP EIP
1. MOV ESP, EBP
현재 프레임의 꼭대기를 가르키는 ESP 에 스택의 밑바닥 값을 가르키는 EBP 의 값을 넣는다.
프레임 내의 할당된 공간 ( Prolog 에서 SUB ESP, N ) 을 해제시킨다. (값은 그대로 남아있다.)
2. POP EBP
이전 프레임의 밑바닥을 가르키는 값을 EBP 에 저장한다.
슬슬 돌아갈 준비를 하고있다.
3. POP EIP
돌아가야할 주소가 담긴 부분을 스택의 꼭대기에서 POP 시키며, 다음 실행위치를 EIP 에 저장한다.
4. JMP EIP
EIP 로 이동한다.
그림을 통해 이해해보도록하자.
천천히 과정을 따라가면서 보는 것이 좋다.
그렇다면 n Frame 을 들어가기 전과 비교를 해보도록 하자.
초기에 ESP, EBP 가 제대로 돌아왔으며 EIP 가 n Frame 의 다음인 0x105 이기 때문에, 정상적으로 프레임이 돌아온 것을 알 수 있다.
기본적인 BOF 준비운동 완료!!
'Wargame Site > BOF' 카테고리의 다른 글
BOF ASLR (0) 2019.04.24 BOF 들어가기 앞서 (0) 2019.04.24 BOF 준비운동 (3) (0) 2019.04.22 BOF 준비운동 (2) (0) 2019.04.22 BOF 준비운동 (1) (0) 2019.04.21 댓글