Information Technology/File Format

Information Technology/File Format

IMAGE_NT_HEADER – IMAGE_FILE_HEADER

Image File Header에는 파일에 대한 대략적인 속성(정보)들을 가지고 있는 구조체이다. Image_File_Header의 구조체는 다음과 같다. 2567 typedef struct _IMAGE_FILE_HEADER { 2568 WORD Machine; 2569 WORD NumberOfSections; 2570 DWORD TimeDateStamp; 2571 DWORD PointerToSymbolTable; 2572 DWORD NumberOfSymbols; 2573 WORD SizeOfOptionalHeader; 2574 WORD Characteristics; 2575 MAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; 출처 : source.winehq.org - winnt.h ..

Information Technology/File Format

IMAGE_NT_HEADERS - Signature

Signature는 "PE\0\0"값(=0x50450000h)을 가지는데 이 값은 변경하면 안된다. 이 값을 변경하게 되면 이 데이터 값을 참조하는 IMAGE_DOS_HEADER의 e_lfanew이 변경 되고, PE파일로 인식하지 못하게 된다.

Information Technology/File Format

IMAGE_NT_HEADERS

IMAGE_NT_HEADERS는 DWORD 타입인 Signature와 구조체인 FileHeader, OptionalHeader를 가지고 있다. Signature는 IMAGE_NT_HEADERS의 시작을 부분이며 이 구조체의 총 크기는 0xF8h이다. (Signature 0x4h, FileHeader 0x14h, OptionalHeader 0x0h) 2664 typedef struct _IMAGE_NT_HEADERS { 2665 DWORD Signature; /* "PE"\0\0 */ /* 0x00 */ 2666 IMAGE_FILE_HEADER FileHeader; /* 0x04 */ 2667 IMAGE_OPTIONAL_HEADER32 OptionalHeader; /* 0x18 */ 2668 }IMAGE_..

Information Technology/File Format

MS-DOS Stub Program

시작점에서부터 IMAGE_DOS_HEADER의 사이즈인 64Bytes 만큼 떨어진 곳에서 찾을 수 있다. 이 부분은 IMAGE_DOS_HEADER와 같은 구조체가 아닌 이름 그대로 프로그램이다. 일반적인 실행파일처럼 실행한다. 이 프로그램에는 "This program cannot be run in DOS mode."라는 문자열을 볼 수 있다. 32bit 프로그램을 도스(16bit)에서 실행할 때 위의 문자열을 출력(16bit 환경에서 실행 하는 것을 방지하는 역할) 해주는데 쓰인다. 그래서 현재는 사용하지 않는 부분이다. 이 부분은 개발 환경 등에 따라 크기가 가변적이다. (MS-DOS Stub Program의 크기가 가변적이기 때문에 IMAGE_DOS_HEADER의 e_lfanew의 값이 가변적이게 되..

Information Technology/File Format

IMAGE_DOS_HEADER

64byte(0x40)의 고정된 크기를 가지며, 디스크상의 첫 부분과 메모리상 ImageBase에 위치하고 있다. ImageBase는 프로세스의 가상 메모리 0 ~ FFFFFFFFh 범위(32bit의 경우)에서 PE파일이 로딩(매핑)되는 시작 주소를 나타내는 부분이다. DOD Header의 처음 2byte는 DOS Header 구조체의 e_magic 인자로 MZ로 시작한다. 이는 DOS 개발자 가운데 한명인 Mark Zbikowski의 이니셜로 DOS Header의 시그니쳐로 사용하고 있다. e_magic은 MZ를 나타내는 첫 2bytes 로 DOS Header 의 식별자이고, 마지막의 e_lfanew는 가변적인 값을 가지는 것으로 PE Header(NT header)의 주소를 알아볼 수 있다. e_lf..

Information Technology/File Format

Runtime Data Areas의 구조

Runtime Data Areas는 Process로서의 JVM이 프로그램을 수행하기 위해 OS로부터 할당 받는 메모리 영역이다. Runtime Data Areas는 각각의 목적에 따라 5 개의 영역으로 나뉜다. PC Registers Java Virtual Machine Stacks Native Method Stacks Method Area Heap 이 중에서 앞의 세가지 메모리 영역, 즉 PC Register와 두 개의 Stack 영역은 각 Thread 별로 생성이 되고 Method Area 와 Heap은 모든 Thread에게 공유된다.

hakawati
'Information Technology/File Format' 카테고리의 글 목록