
어셈블리어 call, leave, ret 명령어와 스택프레임
·
리버싱/공부
call 주소 함수를 호출할 때 쓰이는 명령어다.(어셈블리어에서는 프로시저라는 개념이 있지만 함수와 비슷하기도 하고 더 친숙해서 함수라고 쓰겠다.) call을 통해 함수를 호출하고 ret명령어로 반환될 때 다시 돌아오기 위해서 다음 명령어의 주소를 stack에 넣고 해당 함수의 주소로 이동한다. 어셈블리어로 쉽게 풀어쓰면 아래와 같다. (위 사진을 참고하자) push 0x0000000000402377 jmp helloworld.4029A0 스택프레임 leave 명령어를 공부하기 전에 조금 알아두면 좋을 것 같아서 넣어본다. 글 아래 주소를 참조할테니 한 번 읽어보면 좋을 듯 하다. PUSH EBP MOV EBP, ESP SUB ESP, 상수 ; 함수 시작 ; 현재의 ESP(스택포인터)를 EBP에 저장 ;..