Reversing/Reversing

함수 호출 규약

bbolmin 2012. 10. 16. 19:49

 

함수 호출 규약

 

 

cdecl

 

test(1, 2, 3, 4)

 

push 4

push 3

push 2

push 1

call test

add esp, 16

 

 

stdcall

 

test(1, 2, 3, 4)

 

push 4

push 3

push 2

push 1

call test  --> test함수 내부에서 ret 16 수행

 

 

 

fastcall

 

파라미터 : CPU 레지스터 2개 이용. (ECX, EDX)

 

test(1, 2, 3, 4)

 

push 4

push 3

mov edx, 2

mov ecx, 1

call test  --> test함수 내부에서 ret 16 수행

 

 

 

 

c++ 호출 규약

 

비주얼 c++ :  this를 ecx에 넣고 stdcall 처럼 동작.

g++ : 첫 번째 파라미터에 암시적으로 this를 넣고 cdecl 처럼 동작.