오브의 빛나는 별

2부 13장 PE File Format(3) 본문

리버싱

2부 13장 PE File Format(3)

오브의 별 2022. 4. 24. 10:12
반응형

안녕하세요, 오브입니다.

오늘은 NT Header에 대해 알아보겠습니다.

https://staraube.tistory.com/51?category=548043 

 

2부 13장 PE File Format(1)

안녕하세요, 오브입니다. 오늘은 PE 파일의 기본구조와 VA, RVA에 대해 알아보겠습니다. PE File Format 13.1. 소개 PE 파일: Windows 운영체제에서 사용되는 실행 파일 형식. 기존 UNIX에서 사용되는 COFF 기

staraube.tistory.com

https://staraube.tistory.com/52?category=548043 

 

2부 13장 PE File Format(2)

안녕하세요, 오브입니다. 오늘은 PE 헤더의 많은 구조체 중 DOS Header와 DOS Stub에 대해 알아보겠습니다. https://staraube.tistory.com/51?category=548043 PE File Format 13.3. PE 헤더 13.3.1. DOS Header D..

staraube.tistory.com

 

PE File Format

13.3.3. NT Header

  • NT header 구조체 IMAGE_NT_HEADERS
typedef struct _IMAGE_NT_HEADERS { 
DWORD Signature; // PE Signature 50450000 (“PE"00) 
lMAGE FILE HEADER FileHeader; 
lMAGE_OPTIONAL_HEADER32 OptionalHeader; 
} lMAGE_NT_HEADERS32 , *PlMAGE_NT_HEADERS32;
  • IMAGE_NT_HEADERS 구조체는 3개의 멤버로 이루어짐
  • 크기: F8
  1. Signature: 50450000h로 “PE”00 값
  2. FileHeader
  3. Optional Header

 

13.3.4. NT Header-File Header

  • IMAGE_FILE_HEADER: 파일의 개략적인 속성 나타냄
typedef struct _IMAGE_FILE_HEADER { 
WORD Machine; 
13 PE File Formal 149 
WORD NumberOfSections; 
DWORD TimeDateStamp; 
DWORD PointerToSymbolTable; 
DWORD NumberOfSymbols; 
RD SizeOfOptionalHeader; 
ORD Characteristics; 
} 1MAGE_F1LE_HEADER, *PlMAGE_F1LE_HEADER;
  • IMAGE_FILE_HEADER는 Machine, NumberOfSections, SizeOfOptionalHeader, Characteristics 멤버가 중요

1. Machine

  • CPU 별로 고유한 값이며 32비트 Intel x86 호환 칩은 14C의 값을 가짐

2. NumberOfSections

  • 섹션의 개수를 나타냄
  • 반드시 0보다 커야하고 정의된 섹션 개수와 실제 섹션이 다르면 실행 에러 발생

3. SizeOfOptionalHeader

  • lMAGE_NT_HEADERS 구조체의 마지막 멤버는 IMAGE_OPTIONAL_HEADER32 구조체인데 이 구조체의 크기 나타냄
  • IMAGE_OPTIONAL_HEADER32는 C언어의 구조체이기 때문에 그 크기가 정해져있음
  • 근데 Windows의 PE 로더는 SizeOfOptionalHeader 값을 보고 IMAGE_OPTIONAL_HEADER32 값 결정
  • PE32+ 형태의 파일인 경우 IMAGE_OPTIONAL_HEADER64 구조체 사용

4. Characteristics

  • 파일의 속성을 나타내는 값으로 실행 가능한 형태인지 혹은 DLL 파일인지 등의 정보들이 bit OR 형식으로 조합
  • PE 파일 중 Characteristics 값에 0002h가 없는 경우: .obj와 같은 object 파일 및 resource DLL 같은 파일
  • IMAGE_ FILE_HEADER의 TimeDateStamp: 파일의 실행에 영향을 미치지 않는 값. 해당 파일의 빌드 시간을 나타낸 값
  • 개발 도구에 따라서 이 값을 셋팅해주는 도구가 있고 아닌 도구가 있음.
반응형

'리버싱' 카테고리의 다른 글

2부 13장 PE File Format(5)  (0) 2022.04.24
2부 13장 PE File Format(4)  (0) 2022.04.24
2부 13장 PE File Format(2)  (0) 2022.04.23
2부 13장 PE File Format(1)  (0) 2022.04.23
1부 3장 리틀 엔디언 표기법  (0) 2022.04.23