reversing/어셈블리어
함수의 사용
코끼리_땃쥐
2023. 3. 6. 15:13
반응형
함수 시작 위치에서 스택을 확인하면, 스택에 매개변수가 입력된 후에 복귀주소(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에 저장 |
반응형