반응형

위에 보이는 구조가 PE 파이르이 구조이다.

앞으로 하나씩 공부해보자

 

 VA/RVA

 

VA: 프로세스 가상 메모리의 절대 주소

RVA :어느 기준 위치(ImageBase) 부터의 상대적인 주소

 

 

위에 3가지를 PE 헤더라고 한다.

 

1. DOS header

 

앞서 PE파일은 호환성에 중점을 두었고 DOS파일에 대한 하위 호환성을 위해서 만들어졌다.

그래서 PE 헤더의 첫부분에 DOS EXE Header 을 확장 시킨 IMAGE_DOS_HEADER 구조체가 존재한다.

 

 

특징

  • 구조체의 크기는 40이다.
  • e_magic : DOS signature (4D5A => 아스키 값 "MZ")
  • e_lfanew : NT header 의 옵션을 표시 파일마다 가변적인 값을 가진다.

2. DOS Stud

 

중요도 X

 

3. NT Header

 

IMAGE_NT_HEDARS 는 3개의 맴버로 이루어져 있다.

크기는 F8 = 248

 

3.1 Signature 

50450000h("PE" 00) 값을 가진다.

3.2 File Header

 

파일의 개략적인 속성을 나타내는 IMAGE_FILE_HEADER 구조체이다.

  • Machine : CPU 고유넘버를 뜻한다.
  • Number Of Sections : PE파일을 섹션으로 코드 데이터 리소스로 분리하는데 그 섹션의 갯수를 나타내므로 0보다 커야한다.
  • SIze OFtional Header :  IMAGE_OPTIONAL_HEADER32구조체의 크기를 나타내며 이미 결정이 되어 있다. 64비트와 차이가 난다.
  • Characteristics: 파일의 속성을 나타내며 bit Or 형식으로 조합된다.
  • Time Date Stamp : 빌드 시간

3.3 Optional Hader

 

PE헤더의 구조체 중에 가장 크기가 크다.

 

  • Magic : 32 구조체의 경우 10B / 64 구조체의 경우 20B 의 값을 가진다.
  • AddressOfEnterPoint : EP의 RAV값으 가진다.
  • ImageBase : PE 파일의 로딩 시작주소로
    ex) EXE,Dll->user mamory(0~7FFFFFFFF)
         SYS-> kernelmamory(800000000~FFFFFFFFFF)
    로딩후 EIP = ImageBase + AddressOfEnteryPoint
  • SectionAlignment = 메모리에서 섹션의 최소단위
  • FileAlignment = 파일에서 셕션의 최소 단위
  • SizeOfImage = 메모리에 로딩후 가상 메모리에서 PE Image의 크기
  • SizeOfHeader = PE헤더의 전체크기
  • Sudsystem = 파일의 개인정보

의미 비고
1 Driver File 시스템 드라이버
2 GUI File 창기반 애플리케이션
3 CUL File 콘솔기반 애플리케이션

 

  • NumberOfRivaAndSizes = DataDirectory 배열의 갯수를 나타낸다.

3.4 섹션 헤더

 

각 섹션의 성질을 정리한 것이 섹션 헤더이다.

종류 엑세스 권한
codr 읽기/--/실행
data 읽기/쓰기/--
recourse 읽기/--/--

섹션 헤더의 중요 구조체를 알아보면

IMAGE_SECYON_HEDER 구조체
VirtualSize 메모리에서 섹션이 차지하는 크기
VirtualAddress 메모리에서 섹션이 시작하는 주소(RVA)
SizeOfRawData 파일에서 섹션이 차지하는 크기
PointToRawData 파일에서 섹션의 시작 위치
Characteristics 섹션의 속성(bit OR)
  • VirtualAddress 와 PointToRawData는 IMAGE_OPTIONA_HEADER32에 정의 된 SectionAlignment 와 FileAlignment의 해서 결정이된다.
  • VirtualSize와 SizeOfRawData 은 일반적으로 다른 값을 가진다. 이를 통해서 파일에서의 섹션의 크기와 메모리에 로딩되는 섹션의 크기는 다르다는 이야기가 된다.

 

IMAGE 란 PE 파일이 메모리에 로딩된 상태를 뜻하는 말이다.

 

 

========================================================

PE 헤더의 각 구조체와 섹션 헤더에 대해서 알아봤다. 그동안 책도 다시 여러번 읽어도 보고 다른 사람 강의도 찾아봤는데 한국어로된 강의는 찾기 힘들었다. 아무튼 PE파일의 구조중 가장 앞부분에 대해서 포스팅을 적은 나에게 칭찬을 하고 싶다. 그동안에 많은 실폐 끝에 작은 성공을 이룬것이 나에게 좋은 의미가 되었다고 생각이된다. 

요즘 코로나 때문에 밖에 나가기 힘들어서 스트레스도 쌓이는데 이번에 책을 또 사왔다. 평소에 읽어보고 싶었던 '빨간머리 앤' 이라는 책이다. 다음에 포스팅 하겠지만 남녀노소 모두에게 도움이되는 책이다. 정말 감명 깊게 보고 있다.

반응형

'리버싱 > 리버싱 핵심원리' 카테고리의 다른 글

IAT  (0) 2020.03.29
RVA to RAW  (0) 2020.03.11
도대체 리버싱을 어떻게 공부해야 하나요?  (0) 2020.03.04
11_Lenas_Reversing_for_Newbies 책보고 풀이  (0) 2020.03.02
11_Lenas_Reversing_for_Newbies 분석 실폐  (0) 2020.02.28
Posted by 53C
,