-
PE File 구조체windows system 2013. 12. 22. 17:17IMAGE_DOS_HEADER
e_magic : DOS signature (4D5A => ASCII값 "MZ")
e_lfanew : NT header의 offset을 표시
*DOS stub : 코드(어셈블리어)와 데이터의 혼합으로 이루어져 있다.
IMAGE_NT_HEADERsignatures는 PE (0x00004550)
IMAGE_NT_HEADER - IMAGE_FILE_HEADERMachine
해당 실행 파일이 실행될 수 있는 시스템을 나타낸다.
NumberOfSections
각 색션에 대한 설명은 IMAGE_SECTION_HEADER부분에서 볼 수 있다. 위 캡쳐에서는 .textbss, .text, .rdata, .data, .idata, .rsrc, .reloc 7개의 section이 있다.
Time Data Stamp
linker에 의해 프로그램이 만들어진 시간 값.
SizeofOptionalHeader
IMAGE_OPTIONAL_HEADER구조체의 Byte수
(32bit PE파일 : 224byte , 64bit : 240byte)
IMAGE_OPTIONAL_HEADER32는 운영체제마다 크기가 다를 수 있기 때문에, PE로더가 해당 값을 먼저 확인하고 처리한다.Characteristics
IMAGE_NT_HEADER - IMAGE_OPTIONAL_HEADERMagic
0x10B는 32bit일 경우, 0x20B는 64bit 인 경우.
AddressOfEntryPoint
프로그램에서 최초로 실행되는 코드의 시작 주소.
ollydbg로 프로그램 실행 시 첫 eip값은 ImageBase + AddressOfEntryPoint값이다.
ImageBase
해당 프로세스의 가상메모리 0~FFFFFFFF범위 중에서 PE파일이 로딩되는 시작주소.
일반적으로 EXE파일은 00400000이고, DLL파일은 10000000이다.
첫 eip값은 ImageBase + AddressOfEntryPoint값
IMAGE_DATA_DIRECTORY [15] 배열의 각 항목마다 정해진 값 가짐
IMAGE_SECTION_HEADERRVA
VA & RVAVA : 실제 가상메모리 상에서의 주소
PE file은 0x00400000(Image Base)에 올라가고, SECTION .text는 0x00401000(ImageBase + Base of Code)에서 부터 시작한다.
'windows system' 카테고리의 다른 글
TLS, TEB, PEB, SEH (0) 2014.01.08 IAT(Import Address Table) , EAT(Export Address Table) (0) 2013.12.28 DLL injection (0) 2013.12.24 CreateProcess API (0) 2013.12.23 calling convention (0) 2013.12.22