나의 기록, 현진록

[Reversing] 스택(Stack) 메모리 구조와 스택 프레임(Stack Frame) 본문

-Computer Theory

[Reversing] 스택(Stack) 메모리 구조와 스택 프레임(Stack Frame)

guswlsdk 2017. 9. 10. 16:20
반응형

스택(Stack)이란?

  • 메모리의 스택 영역은 함수의 호출과 관계되는 지역변수와 매개변수를 저장한다.
  • 차곡 차곡 쌓여진 더미를 의미한다.
  • LIFO(Last Input First Output, 후입선출) 구조라고도 한다

스택 메모리 구조

  • 가장 먼저 저장되는 데이터는 스택의 아래 쪽(높은 주소)부터 쌓이고, 다음 저장되는 데이터가 바로 그 위(낮은 주소)에 쌓인다.


스택의 특징

  • 메모리 중에서 스택은 커널 영역을 침범하지 않기 위해서 밑에서 부터 데이터를 쌓아올린다.

  • 힙 영역과 스택 영역이 서로 반대로 데이터를 채워 나가기 때문에 서로의 영역을 침범할 수 있음

  • Stack overflow : 스택 영역이 힙 영역을 침범

  • Heap overflow : 힙 영역이 스택 영영을 침범


PUSH / POP

  • PUSH : 스택에 값을 저장하는 것
  • POP : 스택에 저장된 값을 제거하는 것




스택 프레임(Stack Frame)
  • 가장 먼저 처리해야 할 것을 가장 가까운 곳에 둔다.
  • 차곡 차곡 쌓아올려진 데이터는 사용할 때 가장 위의 것부터 사용된다.

시스템 스택의 크기
  • 시스템 스택 : OS에 기본 적으로 구현되어 있는 스택
  • 시스템 스택의 크기는 프로그램 레지스터의 크기와 일치한다.
  • 32비트에서 스택의 데이터 크기는 4바이트(32비트)이다.

TOP / BOTTOM
  • TOP과 BOTTOM은 스택의 특정 위치를 가리킨다.
  • TOP은 가장 최근에 스택에 저장된 값, BOTTOM은 가장 최초로 스택에 저장된 값
  • TOP의 위치는 스택에서 데이터가 추가되거나 제거될 때마다 변한다.
  • 스택에 데이터가 추가될 때 TOP의 주소 값은 4바이트 씩 작아짐




반응형

'-Computer Theory' 카테고리의 다른 글

[Reversing] 인터럽트(Interrupt)  (0) 2017.09.10
[Reversing] 함수 호출 규약(Calling Convention)  (0) 2017.09.10
[Reversing] Breakpoint  (0) 2017.09.09
[Reversing] API  (0) 2017.09.09
[Reversing] 어셈블러의 종류  (0) 2017.09.09