calling convention
-
[리버싱 핵심원리 study] 10장 함수 호출 규약Reverse Engineering 2020. 12. 4. 19:47
함수 호출 규약(Calling Convention)은 함수를 호출할 때 어떤 방식으로 argument를 전달할지, 함수가 끝난 후 어떤 방식으로 ESP(스택 포인터)를 정리하는지에 대한 약속이다. 대표적으로 cdecl, stdcall, fastcall 등이 있다. Ollydbg로 예제 프로그램의 어셈블리 코드를 살펴보면서 각 방식의 특징을 살펴보겠다. 1. cdecl 주로 C언어에서 사용되는 방식이며, 'Caller'에서 스택을 정리하는 특징을 보인다. #include "stdio.h" int add(int a, int b) { return a+b; } int main(int argc, char* argv[]) { return add(1, 2); } 위와 같은 코드를 VC++에서 최적화 옵션을 끄고 빌드..