Security/Reversing
Reversing Study - day 5(함수 호출 규약)
bonggang
2020. 3. 12. 12:13
* 본 문서는 리버싱 핵심 원리책(일명 나뭇잎 책)과 인터넷 자료들을 바탕으로 학습한 기록입니다.
* 개인의 학습을 위한 자료이기 때문에 정확하지 않은 정보가 포함되어 있을 수 있습니다.
Calling Convention: 함수를 호출하는 방식에 대한 일종의 규약으로 인수 전달 방법, 반환 값, 인수 전달을 위해 사용한 메모리 정리 등을 규정한 것.
- 함수 호출 전 파라미터를 *스택을 통해 전달
- cdecl: 주로 C언어에서 사용되는 방식, Caller에서 스택을 정리
- stdcall: Win32 API에서 사용, Caller에서 스택을 정리
- fastcall: 함수에 전달하는 파라미터 일부를 레지스터를 이용하여 전달. 좀 더 빠른 호출이 가능하지만 ECX, EDX 레지스터를 관리하는 추가적인 오베헤드가 필요한 경우가 있음.
스택: 프로세스에서 정의된 메모리 공간. 아래 방향으로 자란며 PE헤더에 그 크기가 명시
Caller: 함수를 호출한 쪽
Callee: 호출을 당한 함수