발자취
[Reverse Engineering] #04. Windows Memory Layout 본문
Dreamhack Study/Reverse Engineering
[Reverse Engineering] #04. Windows Memory Layout
해린 2024. 5. 29. 02:52본 게시물은 Dreamhack의 Reverse Engineering 로드맵 과정을 학습한 기록이다.
#01. 서론
1. 메모리 레이아웃(Memory Layout)
: 가상 메모리(Virtual Memory)의 구성
리버스 엔지니어링의 핵심은 바이너리를 분석하여 바이너리의 동작을 이해하는 것.
바이너리의 동작을 자세히 이해하기 위해서는 바이너리가 상호작용하는 메모리에 대한 이해가 필요하다.
#02. 프로세스 메모리 구조
1. 섹션
: 유사한 용도로 사용되는 데이터가 모여있는 영역. (윈도우의 PE 파일은 PE 헤더와 1개 이상의 섹션으로 구성되어 있다.)
예: ".text" 섹션에는 PE의 코드가 적혀있다.
1-1. PE 헤더에 적혀 있는 섹션의 정보
- 섹션의 이름
- 섹션의 크기
- 섹션이 로드될 주소의 오프셋
- 섹션의 속성과 권한
1-2. 섹션의 종류 및 역할
1) .text 섹션
: 실행 가능한 기계 코드가 위치하는 영역. 읽기, 실행 권한 부여됨 (쓰기 권한은 제거)
2) .data 섹션
: 컴파일 시점에 값이 정해진 전역 변수들이 위치하는 영역. 읽기, 쓰기 권한이 부여됨
3) .rdata 섹션
: 컴파일 시점에 값이 정해진 전역 상수와 참조할 DLL 및 외부 함수들의 정보. 읽기 권한 부여됨 (쓰기 권한은 제거)
2. 섹션이 아닌 메모리
2-1. 스택
: 보통 지역 변수, 함수의 리턴 주소가 저장됨. 읽기, 쓰기 권한 부여.
확장: 높은 주소 → 낮은 주소
2-2. 힙
: 모든 종류의 데이터 저장. 전역적으로 접근 가능. 동적으로 할당. 읽기, 쓰기 권한 부여 (상황에 따라 실행 권한도)
'Dreamhack Study > Reverse Engineering' 카테고리의 다른 글
| [Reverse Engineering] #05-2. 어셈블리어와 x86-64 - Quiz (0) | 2024.05.30 |
|---|---|
| [Reverse Engineering] #05-1. 어셈블리어와 x86-64 - 이론 (0) | 2024.05.29 |
| [Reverse Engineering] #03. 컴퓨터 구조와 명령어 집합 구조 (0) | 2024.05.29 |
| [Reverse Engineering] #02. 동적 분석과 정적 분석 (0) | 2023.05.14 |
| [Reverse Engineering] #01. Binary (0) | 2023.05.14 |