본문으로 바로가기

[D+7] 함수호출규약

category 해킹&보안/리버싱 2017. 3. 30. 21:29
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

2. 함수호출규약


1) 스택프레임 (Stack Frame)




2) 함수 호출 시 스택의 변화 순서


3) 호출규약 종류


▣ cdecl

1. c/c++에서 사용되는 기본 규약

2. 인자를 스택을 통해서 전달 ( <-- : 마지막 인자부터 )

3. Caller에서 인자정리

☞ 가변인자함수가 가능


▣ stdcall

1. Visual Basic, WinAPI에서 사용

2 . 스택을 통해서 인자전달

3. Callee(처리부)에서 인자정리

☞ RET op1 : ESP를 op1 값만큼 증가시킴.

☞ 고정된 크기만큼 항상 정리를 해주니까 가변인자를 가지는 함수 못 만든다.


▣ fastcall

1. 델파이 언어

2. only 스택이 아닌 스택+레지스터를 통해 인자 전달 (인자 : ecx, edx, 스택)

3. 체감은 힘드나 속도가 더 빠름.

4. Callee에서 인자정리

cdecl

std 

fastcall 

스택

스택 

스택+레지스터 

caller(가변인자가능)

callee 

callee 




[TIP]

▣ _declspec(naked)

: 프롤로그 에필로그 같은 코드들을 아예 만들어주지 않고 직접 손으로 모든것을 다 짜야함. 변수마저도...







i2sec 대구지점 23기 수료생.

'해킹&보안 > 리버싱' 카테고리의 다른 글

[D+9] 패킹&언패킹 (1)  (0) 2017.04.11
[D+8] PE 구조  (0) 2017.04.10
[D+6] 리버싱 소개 (6)  (0) 2017.03.28
[D+5] 리버싱 소개 (5)  (0) 2017.03.27
[D+4] 리버싱 소개 (4)  (0) 2017.03.26