일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 미로 탐색 알고리즘
- 재귀
- windosws wbcs
- C
- Stack
- 큐
- HTML
- 파이썬
- windosw 문자열
- web
- 암호수학
- pwnable.kr
- PHP
- OSI
- 두근두근 자료구조
- c언어
- 파일 시스템
- 정렬 알고리즘
- ftz level13
- Java
- LoB
- SWiFT
- ftz
- System
- 백준
- 자료구조
- 시간복잡도
- 스택
- War Game
- level13
Archives
- Today
- Total
나의 기록, 현진록
[Reversing] 스택(Stack) 메모리 구조와 스택 프레임(Stack Frame) 본문
반응형
스택(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 |