Introfor

Page Directory 본문

Doing/Forensic

Page Directory

YongArtist 2016. 7. 20. 22:31


페이지 디렉토리는 1024개의 페이지 디렉토리 엔트리(PDE)로 구성된 데이터이다. 각각의 디렉토리 엔트리에는 페이지 테이블의 첫 주소, 페이지 테이블의 포인터를 가지고 있다. 따라서 시스템에는 1024개의 페이지 테이블이 존재한다.

페이지 디렉토리 엔트리는 FAT(File Allocation Table) 파일 시스템에서 파일 이름, 확장자, 위치 등과 같은 메타 데이터를 표현하기 위한 구조체이다.

하나의 프로세스에는 하나의 페이지 테이블이 존재한다. 여기서 페이지 테이블은 프로세스의 페이지 정보를 저장하고 있는 곳이다. 그 정보는 페이지 번호를 나타내는 색인과 해당 페이지에 할당된 물리 메모리(프레임)의 시작주소로 구성되어 있다. 또 1024개의 페이지 테이블 엔트리(PTE)로 구성 되어 PDE와 비슷한 구조를 가진다. PTE는 4KB의 물리 주소(페이지의 포인터)를 가지고 있다.

페이징 기법은 가상 메모리를 모두 같은 크기의 블록으로 나눠서 활용하는 기법을 의미하며, 페이지는 페이징 기법으로 나눠진 블록을 말한다. 가상 메모리에 페이지가 있다면 물리 메모리에는 프레임이 존재한다.
페이지가 하나의 프레임을 할당 받으면 물리 메모리에 위치하게 되고, 프레임을 할당 받지 못하면 페이지는 외부 저장 장치에 저장된다.

가상주소를 이용한 물리 주소 찾는 과정

CR3를 참조하여 페이지 디렉토리를 찾는다. 가상 주소의 최상위 주소 10bit를 참조하여 PDE의 번호를 구해 PDE를 구하여 페이지 테이블로 인덱싱한다. 인덱싱해서 찾은 엔트리를 참조하여 페이지 테이블의 주소를 찾는다. 가상 주소의 중간 주소 10bit를 활용하여 물리 페이지로 인덱싱한다. 가상 주소의 마지막 12bit를 활용하여 물리 페이지 내의 오프셋을 구한 후 물리 주소에 접근.

'Doing > Forensic' 카테고리의 다른 글

[Tool] Redline 설치  (0) 2016.06.22
[Tool] Volatility 윈도우 설치법  (0) 2016.06.21
Comments