리버싱
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
- Signature: 50450000h로 “PE”00 값
- FileHeader
- 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: 파일의 실행에 영향을 미치지 않는 값. 해당 파일의 빌드 시간을 나타낸 값
- 개발 도구에 따라서 이 값을 셋팅해주는 도구가 있고 아닌 도구가 있음.
반응형