함수 호출 규약(Calling Convention)
함수 호출 시 전달 되었던 파라미터들에 대하여
함수 호출이 끝난 후 스택을 정리하는 방법에 대한 약속( ESP를 정리하는 방법 )
caller : 함수를 호출한 쪽
callee : 호출 당한 함수
1. cdcel
- 주로 C언어에서 사용 됨
- caller에서 스택을 정리한다.
- 장점 : 가변 길이 파라미터를 전달할 수 있다.
2. stdcall
- Win32 API에서 사용됨
- callee에서 스택을 정리
- c언어에서 stdcall 방식을 사용하고 싶을 때는 함수이름 앞에 '_stdcall' 옵션 추가
3. fastcall
- stdcall 방식과 기본적으로 같지만, 전달하는 파라미터의 일부(2개)를
레지스터(ECX, EDX)를 이용해 전달한다. 나머지는 스택을 통해 전달
- 장점 : 좀더 빠른 함수 호출 가능
- 단점 : ECX, EDX에 대하여 백업이 필요하거나,
함수에서 ECX, EDX를 다른 용도로 써야할 경우, 파라미터를 따로 저장해야함
'Reversing > 리버싱 공부' 카테고리의 다른 글
01. Hello_World.exe (0) | 2014.10.20 |
---|---|
PE 파일 포맷 ( PE File Format ) 요약 (0) | 2014.10.20 |
레지스터 ( Register )의 이해 (0) | 2014.10.20 |
바이트 오더링( 빅 엔디언, 리틀 엔디언 ) (0) | 2014.10.20 |
리버싱 ( Reversing ) (0) | 2014.10.20 |