리버싱 핵심원리
메모리 개념 깔짝
whydontyoushovel
2025. 2. 25. 14:58
메모리 종류
- 스택
- 힙
- 데이터 영역
- 코드 영역
▷ 스택
- 함수 속 지역 변수들이 사는 곳
- 함수에 메모리(스택 프레임)를 할당하고 그 안에 지역 변수가 저장되는 듯
- 나중에 들어온 애가 먼저 나감 (1함수가 2함수 호출->2함수가 3함수 호출했을 때 3->2->1 순서로 반환됨)
- 크기 제한적
- 반환 주소(함수 끝나고 갈 곳), 이전 스택 프레임의 포인터(시작부분 가리키는 거)도 여기 저장되는 듯
- 함수 끝나고 return 만나면 스택에서 반환 주소 꺼내서 거기로 간대 와
▷힙
- 스택과 달리 동적으로 메모리를 할당할 때 사용 (<->메모리 크기 제한적)
- malloc이나 calloc 함수 등 사용할 때
- 스택보다 크기가 큼
- 프로그램 종료될 때까지 해제 안됨
▷데이터 영역
- 전역 변수, static 변수들이 사는 곳
- 프로그램 시작하면서 메모리에 로드됨
- 종료될 때까지 유지
▷코드 영역
- 실행된 프로그램의 코드가 사는 곳
- 함수(의 코드)는 여기 살고 있음
- 리버싱할 때 Code Window가 여기 내용인가 봄
- stub code도 여기 산다 함
스택 | 힙 |
|
|
데이터 영역 | 코드 영역 |
|
|