PE Header
PE Header merupakan salah satu
struktur dari IMAGE_NT_HEADER (dideklarasikan dalam WINNT.H). Header ini
mengandung berbagai macam jenis informasi seperti lokasi dan ukuran dari area
kode dan data, sistem operasi yang dipakai, ukuran stack, dan lain-lain. Header
ini juga mengandung MS-DOS stub, yaitu program kecil yang akan menampilkan teks
"This program cannot be run in MS-DOS mode." Bila file PE dijalankan
di lingkungan yang tidak mendukung Win32. PE Header Terdiri dari struktur :
DWORD Signature;
IMAGE_FILE_HEADER FileHeader;
IMAGE_OPTIONAL_HEADER OptionalHeader;
Dimana Signature adalah teks "PE\0\0". Sedangkan
IMAGE_FILE_HEADER berisi struktur :
- WORD
Machine //Berisi nilai untuk jenis CPU yang
dipakai, ex : 0x14d untuk Intel i860
2. WORD
NumberOfSections //Berisi
jumlah section yang ada di file PE
2
DWORD
TimeDateStamp //Berisi
tanggal kapan linker (atau compiler untuk File
OBJ) memproduksi file PE
3
DWORD
PointerToSymbolTable //Offset untuk
tabel symbol COFF
4
DWORD
NumberOfSymbols //Berisi jumlah
symbol COFF di tabel
5
WORD :
SizeOfOptionalHeader
//Berisi ukuran dari optional header
6
WORD
Characteristics
//Berisi informasi tentang file PE
Untuk
IMAGE_OPTIONAL_HEADER berisi :
1. WORD
Magic //Selalu bernilai 0x010B
2. BYTE
MajorLinkerVersion //Versi linker
yang dipakai
3. BYTE
MinorLinkerVersion //Versi linker
yang dipakai
4.
DWORD
SizeOfCode //Ukuran dari section code
5. DWORD
SizeOfInitializedData //Ukuran dari
semua data section yang terinisialisasi
6. DWORD
SizeOfUninitializedData //Ukuran dari
semua data section yang tidak terinisialisasi
7.
DWORD
AddressOfEntryPoint //Alamat dimana loader akan memulai eksekusi file PE,
alamat ini adalah RVA (Relative Virtual Address)
8. DWORD
BaseOfCode //Alamat RVA dimana
section code dimulai
9. DWORD
BaseOfData //Alamat RVA dimana
section data dimulai
10. DWORD
ImageBase //Alamat dimana file PE
akan dimapping di memory
10. DWORD
SectionAlignment
//Nilai penggandaan untuk mapping tiap section di memory
11. DWORD
FileAlignment //Nilai penggandaan
untuk mapping tiap section di disk
12. WORD
MajorOperatingSystemVersion //Versi
OS yang dipakai
13. WORD
MinorOperatingSystemVersion //Versi
OS yang dipakai
14. WORD
MajorSubsystemVersion //Versi minimum
OS yang dipakai
15. WORD
MinorSubsystemVersion //Versi minimum
OS yang dipakai
18.
DWORD
Reserved1 //Selalu bernilai 0
19. DWORD
SizeOfImage //Ukuran dari image yang
akan diload oleh loader
20. DWORD
SizeOfHeaders //Ukuran dari PE Header
dan tabel section
21. DWORD
CheckSum //Nilai checksum CRC dari
file PE
22. WORD
Subsystem //Tipe subsistem yang
diperlukan untuk keperluan GUI
23. WORD
DllCharacteristics
//Tanda atau flag untuk inisialisasi DLL (Dynamic Link Library)
24. DWORD
SizeOfStackReserve //Ukuran dari
virtual memory yang akan digunakan untuk
inisialisasi stack
25. DWORD
SizeOfStackCommit //Ukuran dari
memory yang akan digunakan untuk inisialisasi stack
26. DWORD
SizeOfHeapReserve //Ukuran dari
virtual memory yang akan digunakan untuk inisialisas heap proses
27. DWORD
SizeOfHeapCommit //Ukuran dari memory
yang akan digunakan untuk inisialisasi heap proses
28. DWORD
LoaderFlags
//Digunakan untuk keperluan debugging
29. DWORD
NumberOfRvaAndSizes //Jumlah dari
array DataDirectory
untuk melihat halaman selanjutnya klik disini