본문 바로가기
reversing/어셈블리어

함수의 사용

by 코끼리_땃쥐 2023. 3. 6.
반응형

함수 시작 위치에서 스택을 확인하면, 스택에 매개변수가 입력된 후에 복귀주소(returnaddress)가 저장되어있다.

함수 시작 코드에는 이후에 EBP값을 저장하고 스택 크기를 변경하는 코드가 이싿. 이 부분을 함수의 프롤로그(prologue)라 한다.

 

함수 구조는 함수가 시작할 때 수행되는 프롤로그와 함수가 끝날 때 수행되는 에필로그(epilogue)가 있다. 함수 프롤로그와 에필로그는 다음과 같다.

 

  코드 설명
함수
프롤로그
push ebp 이전 함수의 EBP 레지스터 값을 스택에 보관
mov ebp, esp 현재 함수의 EBP 레지스터 값을 새롭게 설정
sub esp, 10 ESP 값을 변경하여 지역변수 공간을 확보
함수
에필로그
leave (mov esp, ebp) ESP 값을 복원하고,
(pop ebp) 이전 함수의 EBP 값을 꺼냄(pop)
ret (pop eip) 저장된 복귀주소를 꺼내 EIP에 저장
반응형

'reversing > 어셈블리어' 카테고리의 다른 글

조건부 점프  (0) 2023.04.17
while 문  (0) 2023.03.24
어셈블리어 명령어 (2)  (0) 2023.03.12
루프  (0) 2023.03.06
어셈블리어 명령어 (1)  (0) 2023.03.04

댓글