컴퓨터 구조와 관련하여 정리한 내용은 이전 포스팅에 있다.
https://menmen202007.tistory.com/36
[System Hacking] 컴퓨터 구조, 리눅스 메모리 구조
가상머신 컴퓨터를 에뮬레이팅 한 것 가상머신을 작동시키는 컴퓨터(host) / 가상 머신 안에서 작동하는 컴퓨터(guest) 컴퓨터 구조(Computer Architecture) 컴퓨터에 대한 기본 설계. 이에 맞추워 여러 하
menmen202007.tistory.com
컴퓨터 구조 파트를 참고하고 오면 좋을 것 같다.
메모리 레이아웃(Memory Layout)
프로세스 가상 메모리(Virtual Memory)의 구성을 말함.
프로그램을 실행하면 os는 프로세스에게 메모리 공간을 할당해주는데 이 공간을 가상 메모리라고 부름.
프로세스 메모리 구조
섹션
윈도우의 PE파일은 PE 헤더와 1개 이상의 섹션으로 구성됨.
유사한 용도로 사용되는 데이터가 모여있는 영역을 말함.
이러한 섹션에 대한 정보는 PE 헤더에 적혀있음. 이 중 중요한 것은
-섹션의 이름, 섹션의 크기, 섹션이 로드될 주소의 오프셋, 섹션의 속성과 권한
윈도우는 이 정보를 참고하여 PE의 각 섹션을 가상 메모리의 적절한 세그먼트에 매핑.
.text 섹션
실행 가능한 기계 코드가 위치하는 영역
읽기 / 실행 권한 부여
.data 섹션
컴파일 시점에 값이 정해진 전역 변수들이 위치하는 영역
읽기 / 쓰기 권한 부여
.rdata 섹션
컴파일 시점에 값이 정해진 전역 상수와 참조할 DLL 및 외부 함수들의 정보가 저장
읽기 권한 부여
섹션이 아닌 메모리
스택
윈도우 프로세스의 각 쓰레드는 자신만의 스택 공간을 지님. (보통 지역변수나 함수의 리턴 주소가 저장)
읽기 / 쓰기 권한 부여
스택이 확장될 때 기존 주소보다 낮은 주소로 확장
힙
프로그램이 여러 용도로 사용하기 위해 할당받는 공간 (모든 종류 데이터 저장 가능)
스택과 달리 큰 데이터 저장 가능, 전역적 접근 가능, 동적 할당 가능
읽기 / 쓰기 (가끔 실행) 권한 부여
섹션 | 역할 | 일반적 권한 | 사용 예 |
.text | 실행 가능한 코드가 저장된 영역 | 읽기, 실행 | main() 등의 함수 코드 |
.data | 초기화된 전역 변수가 위치하는 영역 | 읽기와 쓰기 | 초기화된 전역 변수, 전역 상수 |
.rdata | 초기화된 전역 상수나 임포트 데이터가 위치하는 영역 | 읽기 전용 | 전역 상수, 임포트 데이터 |
스택 | 일시적으로 저장하고 사용하는 임시 영역 | 읽기, 쓰기 | 지역 변수, 함수의 인자 등 |
힙 | 자유롭게 사용할 수 있는 영역 | 읽기, 쓰기 | malloc(), calloc() 등으로 할당 받은 메모리 |
'정리 > Reversing' 카테고리의 다른 글
[Reversing] IDA 설치 (0) | 2023.07.23 |
---|---|
[Reversing] 리버싱, 바이너리, 정적분석과 동적분석 (0) | 2023.07.02 |
댓글