Download presentation
Presentation is loading. Please wait.
1
PE File Format? 20-1 김건호
2
목차 PE 무엇인가? PE 왜 필요한가? PE 구조 VA/RVA Q/A
3
PE 무엇인가? Portabel Excutable Win32의 가장 기본적인 파일 종류 실행파일 : EXE, SCR
라이브러리 : DLL, OCX 드라이브 : SYS 오브젝트 : OBJ 실제로 OBJ파일만 빼고, 모든 파일이 특수환경에서든 일반환경에서든 실행이 가능한 파일입니다.
4
PE 왜 필요한가? 윈도우의 가장 기초 윈도우의 바이너리를 분석하기 위해 필요한 가장 기초 지식 윈도우 바이너리는 PE 포맷
윈도우 Exploit Code를 만들 때 필요한 기본 지식
5
PE 구조 첫 부분이 도스 해더 부분 PE0000은 NT헤더에 시작 부분
실행하는데 필요한 DLL은 어떠한게 있는지 등등 이러한 수많은 정보들이 구조체 형식으로 저장이 되어있습니다.
6
PE 구조 파일에서는 offset으로 표현되고 메모리에서는 VA로 표현이 됩니다.
개수가 틀려질 수도 있지만 보통 저렇게 저장이 됩니다. Dos header에서부터 section header까지는 PE 헤더라 하고 그 밑으로는 PE Body라고 합니다. 섹션헤더 부분에는 각 섹션에 해당하는 정보를 포함하고 있습니다. 여기에는 그 섹션에 속성, 크기, 시작위치 등과 같은 정보를 가지고 있습니다. 섹션 해더 밑 부분과 각 섹션마다 null padding 이라는 게 존재하는데, 이것은 네트워크 패킷이나 파일, 메모리에서 일을 처리할 때 효율을 높이기 위해 사용되는 최소 기본 단위 개념이 PE파일에서도 적용이 된 것입니다. 파일 메모리에서 섹션에 시작 위치는 각 파일/메모리의 최소 기본 단위의 배수에 해당하는 위치여야 하고, 빈 공간은 NULL로 채워지게 됩니다.
7
VA/RVA VA : Virtual Address RVA : Relative Virtual Address
ImageBase : 기준 위치 PE Header 내의 많은 정보가 RVA 형태 VA = RVA + ImageBase 이 부분은 VA와 RVA에 대한 개념을 알아보겠습니다. VA는 프로그램상 가상 메모리에 절대 주소이고 RVA에는 기준 위치에 대한 가상 메모리 주소입니다. ImageBase는 RVA 메모리 주소를 쓰기위한 값 또는 위치? 라고 생각하시면 되겠습니다. PE Header에 대부분의 정보는 RVA형태로 된 것들이 많습니다. 그 이유는 PE파일 (주로 DLL)이 프로세스 가상 메모리의 특정 위치에 로딩되는 순간 이미 그위치에 다른 PE파일이 로딩 되어 있을 수도 있습니다. 그럴때는 재배치 과정을 거쳐서 비어있는 공간으로 로딩을 시켜야하는데요, 만약 VA 형태로 되어 있다면 정상적인 액세스가 되지 않게 되기 때문에 RVA형태로 되어 있습니다. VA 와 RVA에 관계는 보시는 바와 같은 수식으로 이루어집니다.
8
Q / A blog.naver.com/qlfydehd
Similar presentations