cdecl

    [Rev] 호출 규약

    호출 규약이란 함수 호출 시 인수 전달 방법과 반환값의 수취 방법을 정의한 것. 호출 규약에 따라 레지스터와 스택의 이용 방법이 다르기 때문에 리버싱을 통해 코드를 이해하기 위해선 호출 규약을 파악하는 것이 필수이다. 호출 규약은 아키텍처나 프로그램의 포맷, 컴파일러나 링커에 따라 변한다. cdecl x86의 C/C++에서 가장 일반적인 호출 규약. 함수의 인수는 역순으로 스택에 쌓이고 반환값은 EAX 레지스터에 저장되며 함수 호출원이 스택을 POP한다. stdcall 윈도우 API에서 이용되는 호출 규약. 함수의 인수는 역순으로 스택에 쌓이고 반환값은 EAX 레지스터에 저장되지만 함수가 종료될 때 그 함수 자체가 스택을 PUSH한다. 인수를 위해 확보한 스택 영역은 RET 명령 operand에 의해 P..