| // Copyright 2009 The Go Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style | 
 | // license that can be found in the LICENSE file. | 
 |  | 
 | package pe | 
 |  | 
 | type FileHeader struct { | 
 | 	Machine              uint16 | 
 | 	NumberOfSections     uint16 | 
 | 	TimeDateStamp        uint32 | 
 | 	PointerToSymbolTable uint32 | 
 | 	NumberOfSymbols      uint32 | 
 | 	SizeOfOptionalHeader uint16 | 
 | 	Characteristics      uint16 | 
 | } | 
 |  | 
 | type DataDirectory struct { | 
 | 	VirtualAddress uint32 | 
 | 	Size           uint32 | 
 | } | 
 |  | 
 | type OptionalHeader32 struct { | 
 | 	Magic                       uint16 | 
 | 	MajorLinkerVersion          uint8 | 
 | 	MinorLinkerVersion          uint8 | 
 | 	SizeOfCode                  uint32 | 
 | 	SizeOfInitializedData       uint32 | 
 | 	SizeOfUninitializedData     uint32 | 
 | 	AddressOfEntryPoint         uint32 | 
 | 	BaseOfCode                  uint32 | 
 | 	BaseOfData                  uint32 | 
 | 	ImageBase                   uint32 | 
 | 	SectionAlignment            uint32 | 
 | 	FileAlignment               uint32 | 
 | 	MajorOperatingSystemVersion uint16 | 
 | 	MinorOperatingSystemVersion uint16 | 
 | 	MajorImageVersion           uint16 | 
 | 	MinorImageVersion           uint16 | 
 | 	MajorSubsystemVersion       uint16 | 
 | 	MinorSubsystemVersion       uint16 | 
 | 	Win32VersionValue           uint32 | 
 | 	SizeOfImage                 uint32 | 
 | 	SizeOfHeaders               uint32 | 
 | 	CheckSum                    uint32 | 
 | 	Subsystem                   uint16 | 
 | 	DllCharacteristics          uint16 | 
 | 	SizeOfStackReserve          uint32 | 
 | 	SizeOfStackCommit           uint32 | 
 | 	SizeOfHeapReserve           uint32 | 
 | 	SizeOfHeapCommit            uint32 | 
 | 	LoaderFlags                 uint32 | 
 | 	NumberOfRvaAndSizes         uint32 | 
 | 	DataDirectory               [16]DataDirectory | 
 | } | 
 |  | 
 | type OptionalHeader64 struct { | 
 | 	Magic                       uint16 | 
 | 	MajorLinkerVersion          uint8 | 
 | 	MinorLinkerVersion          uint8 | 
 | 	SizeOfCode                  uint32 | 
 | 	SizeOfInitializedData       uint32 | 
 | 	SizeOfUninitializedData     uint32 | 
 | 	AddressOfEntryPoint         uint32 | 
 | 	BaseOfCode                  uint32 | 
 | 	ImageBase                   uint64 | 
 | 	SectionAlignment            uint32 | 
 | 	FileAlignment               uint32 | 
 | 	MajorOperatingSystemVersion uint16 | 
 | 	MinorOperatingSystemVersion uint16 | 
 | 	MajorImageVersion           uint16 | 
 | 	MinorImageVersion           uint16 | 
 | 	MajorSubsystemVersion       uint16 | 
 | 	MinorSubsystemVersion       uint16 | 
 | 	Win32VersionValue           uint32 | 
 | 	SizeOfImage                 uint32 | 
 | 	SizeOfHeaders               uint32 | 
 | 	CheckSum                    uint32 | 
 | 	Subsystem                   uint16 | 
 | 	DllCharacteristics          uint16 | 
 | 	SizeOfStackReserve          uint64 | 
 | 	SizeOfStackCommit           uint64 | 
 | 	SizeOfHeapReserve           uint64 | 
 | 	SizeOfHeapCommit            uint64 | 
 | 	LoaderFlags                 uint32 | 
 | 	NumberOfRvaAndSizes         uint32 | 
 | 	DataDirectory               [16]DataDirectory | 
 | } | 
 |  | 
 | const ( | 
 | 	IMAGE_FILE_MACHINE_UNKNOWN   = 0x0 | 
 | 	IMAGE_FILE_MACHINE_AM33      = 0x1d3 | 
 | 	IMAGE_FILE_MACHINE_AMD64     = 0x8664 | 
 | 	IMAGE_FILE_MACHINE_ARM       = 0x1c0 | 
 | 	IMAGE_FILE_MACHINE_ARMNT     = 0x1c4 | 
 | 	IMAGE_FILE_MACHINE_ARM64     = 0xaa64 | 
 | 	IMAGE_FILE_MACHINE_EBC       = 0xebc | 
 | 	IMAGE_FILE_MACHINE_I386      = 0x14c | 
 | 	IMAGE_FILE_MACHINE_IA64      = 0x200 | 
 | 	IMAGE_FILE_MACHINE_M32R      = 0x9041 | 
 | 	IMAGE_FILE_MACHINE_MIPS16    = 0x266 | 
 | 	IMAGE_FILE_MACHINE_MIPSFPU   = 0x366 | 
 | 	IMAGE_FILE_MACHINE_MIPSFPU16 = 0x466 | 
 | 	IMAGE_FILE_MACHINE_POWERPC   = 0x1f0 | 
 | 	IMAGE_FILE_MACHINE_POWERPCFP = 0x1f1 | 
 | 	IMAGE_FILE_MACHINE_R4000     = 0x166 | 
 | 	IMAGE_FILE_MACHINE_SH3       = 0x1a2 | 
 | 	IMAGE_FILE_MACHINE_SH3DSP    = 0x1a3 | 
 | 	IMAGE_FILE_MACHINE_SH4       = 0x1a6 | 
 | 	IMAGE_FILE_MACHINE_SH5       = 0x1a8 | 
 | 	IMAGE_FILE_MACHINE_THUMB     = 0x1c2 | 
 | 	IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x169 | 
 | ) | 
 |  | 
 | // IMAGE_DIRECTORY_ENTRY constants | 
 | const ( | 
 | 	IMAGE_DIRECTORY_ENTRY_EXPORT         = 0 | 
 | 	IMAGE_DIRECTORY_ENTRY_IMPORT         = 1 | 
 | 	IMAGE_DIRECTORY_ENTRY_RESOURCE       = 2 | 
 | 	IMAGE_DIRECTORY_ENTRY_EXCEPTION      = 3 | 
 | 	IMAGE_DIRECTORY_ENTRY_SECURITY       = 4 | 
 | 	IMAGE_DIRECTORY_ENTRY_BASERELOC      = 5 | 
 | 	IMAGE_DIRECTORY_ENTRY_DEBUG          = 6 | 
 | 	IMAGE_DIRECTORY_ENTRY_ARCHITECTURE   = 7 | 
 | 	IMAGE_DIRECTORY_ENTRY_GLOBALPTR      = 8 | 
 | 	IMAGE_DIRECTORY_ENTRY_TLS            = 9 | 
 | 	IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG    = 10 | 
 | 	IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT   = 11 | 
 | 	IMAGE_DIRECTORY_ENTRY_IAT            = 12 | 
 | 	IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT   = 13 | 
 | 	IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14 | 
 | ) | 
 |  | 
 | // Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together. | 
 | const ( | 
 | 	IMAGE_FILE_RELOCS_STRIPPED         = 0x0001 | 
 | 	IMAGE_FILE_EXECUTABLE_IMAGE        = 0x0002 | 
 | 	IMAGE_FILE_LINE_NUMS_STRIPPED      = 0x0004 | 
 | 	IMAGE_FILE_LOCAL_SYMS_STRIPPED     = 0x0008 | 
 | 	IMAGE_FILE_AGGRESIVE_WS_TRIM       = 0x0010 | 
 | 	IMAGE_FILE_LARGE_ADDRESS_AWARE     = 0x0020 | 
 | 	IMAGE_FILE_BYTES_REVERSED_LO       = 0x0080 | 
 | 	IMAGE_FILE_32BIT_MACHINE           = 0x0100 | 
 | 	IMAGE_FILE_DEBUG_STRIPPED          = 0x0200 | 
 | 	IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400 | 
 | 	IMAGE_FILE_NET_RUN_FROM_SWAP       = 0x0800 | 
 | 	IMAGE_FILE_SYSTEM                  = 0x1000 | 
 | 	IMAGE_FILE_DLL                     = 0x2000 | 
 | 	IMAGE_FILE_UP_SYSTEM_ONLY          = 0x4000 | 
 | 	IMAGE_FILE_BYTES_REVERSED_HI       = 0x8000 | 
 | ) | 
 |  | 
 | // OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values. | 
 | const ( | 
 | 	IMAGE_SUBSYSTEM_UNKNOWN                  = 0 | 
 | 	IMAGE_SUBSYSTEM_NATIVE                   = 1 | 
 | 	IMAGE_SUBSYSTEM_WINDOWS_GUI              = 2 | 
 | 	IMAGE_SUBSYSTEM_WINDOWS_CUI              = 3 | 
 | 	IMAGE_SUBSYSTEM_OS2_CUI                  = 5 | 
 | 	IMAGE_SUBSYSTEM_POSIX_CUI                = 7 | 
 | 	IMAGE_SUBSYSTEM_NATIVE_WINDOWS           = 8 | 
 | 	IMAGE_SUBSYSTEM_WINDOWS_CE_GUI           = 9 | 
 | 	IMAGE_SUBSYSTEM_EFI_APPLICATION          = 10 | 
 | 	IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER  = 11 | 
 | 	IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER       = 12 | 
 | 	IMAGE_SUBSYSTEM_EFI_ROM                  = 13 | 
 | 	IMAGE_SUBSYSTEM_XBOX                     = 14 | 
 | 	IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16 | 
 | ) | 
 |  | 
 | // OptionalHeader64.DllCharacteristics and OptionalHeader32.DllCharacteristics | 
 | // values. These can be combined together. | 
 | const ( | 
 | 	IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA       = 0x0020 | 
 | 	IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE          = 0x0040 | 
 | 	IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY       = 0x0080 | 
 | 	IMAGE_DLLCHARACTERISTICS_NX_COMPAT             = 0x0100 | 
 | 	IMAGE_DLLCHARACTERISTICS_NO_ISOLATION          = 0x0200 | 
 | 	IMAGE_DLLCHARACTERISTICS_NO_SEH                = 0x0400 | 
 | 	IMAGE_DLLCHARACTERISTICS_NO_BIND               = 0x0800 | 
 | 	IMAGE_DLLCHARACTERISTICS_APPCONTAINER          = 0x1000 | 
 | 	IMAGE_DLLCHARACTERISTICS_WDM_DRIVER            = 0x2000 | 
 | 	IMAGE_DLLCHARACTERISTICS_GUARD_CF              = 0x4000 | 
 | 	IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000 | 
 | ) |