메모리 레이아웃
- 프로세스 가상 메모리의 구성
- 프로그램 실행시 운영체제는 프로세스에게 사용 가능한 메모리 공간을 할당 해줌
- 운영체제 : 프로그램 정보 참조(데이터를 적절한 영역에 저장) → 프로그램에 저장된 데이터가 적절한 영역에 저장되게 함
- 프로세스가 사용할 가상 메모리를 용도별로 구획, 프로세스가 사용하는 데이터를 적절한 데이터에 저장
- 메모리 오염 학습 필요 - 스택 버퍼오버플로우, 포맷 스트링버그, Use After Free, Double Free bug 취약점
섹션
- PE파일은 PE 헤더와 1개 이상의 섹션으로 구성
- 섹션 : 유사한 용도로 사용되는 데이터가 모여있는 영역
- 예시 “.text” 섹션에는 PE코드 적혀있다면, “.data”에는 PE가 실행중 참고하는 데이터 적혀 있음
- 섹선정보는 PE헤더에 존재
- 섹션에서는 섹션이름, 섹션크기, 섹션로드되는 주소 오프셋, 섹션 속성 권한이 중요
- “.text” : 실행 가능한 기계 코드가 위치하는 영역
- 예전에는 읽기/쓰기 권한이 이 세그먼트에 있었으나, 쓰기권한이 악용될 소지가 있어(공격자가 악의적 코드 삽입하기 유리) 현대에는 쓰기권한 제거함
- “.data” - 컴파일 시점에 값이 정해지는 전역 변수가 위치함
- 읽기/쓰기권한(CPU가 이 데이터를 읽고써야함)
- .rdata