Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

난 정말 최고야 멋있어

x86 cdecl,stdcall stack frame 본문

카테고리 없음

x86 cdecl,stdcall stack frame

n00bh4cker 2019. 12. 11. 18:44

함수 호출 직후 , 프롤로그 이전

esp - 14 :  지역 변수
esp - 10 :  지역 변수
esp - c  :  지역 변수
esp - 8  :  지역 변수
esp - 4  :  지역 변수
  esp    :  리턴 어드레스
esp + 4 : 파라미터
esp + 8 : 파라미터

"esp - xx " 에는 스택에서 사용 할 녀석들(지역 변수, 다른 함수에 넘길 인자들...)

"esp + xx " caller 함수의 잔해들 + 그 전 함수에서 넘긴 인자들이 있음

 

cdecl 과 stdcall 의 가장 큰 차이점은 스택을 caller 에서 정리하는가 아니면 callee 에서 정리하는 가의 차이!

WINAPI 는 callee 에서 정리하는 stdcall을 기본 호출 규약으로 삼고 있다! => 호환성을 위해서...

주로 많이 쓰이는 스택 프레임 만드는 방법으로 

 

push ebp

mov ebp, esp

...

...

...

mov esp, ebp

pop ebp

*BOF를 이용해서 리턴값을 변조시키려면 프롤로그 이전 ESP의 주소 ( 새로운 스택프레임의 [EBP+4] )를 덮어씌워야 한다!

 

**BOF 이해를 위한 함수 프롤로그 이후 스택프레임의 모습