Documentation
¶
Rendered for windows/amd64
Index ¶
- Constants
- func IMAGE_ORDINAL(ordinal uintptr) uintptr
- func IMAGE_SNAP_BY_ORDINAL(ordinal uintptr) bool
- type IMAGE_BASE_RELOCATION
- type IMAGE_DATA_DIRECTORY
- type IMAGE_DELAYLOAD_DESCRIPTOR
- type IMAGE_DOS_HEADER
- type IMAGE_EXPORT_DIRECTORY
- type IMAGE_FILE_HEADER
- type IMAGE_IMPORT_BY_NAME
- type IMAGE_IMPORT_DESCRIPTOR
- type IMAGE_LOAD_CONFIG_CODE_INTEGRITY
- type IMAGE_LOAD_CONFIG_DIRECTORY
- type IMAGE_NT_HEADERS
- type IMAGE_OPTIONAL_HEADER
- type IMAGE_SECTION_HEADER
- type IMAGE_TLS_DIRECTORY
- type Module
- type SYSTEM_INFO
Constants ¶
View Source
const ( IMAGE_DOS_SIGNATURE = 0x5A4D // MZ IMAGE_OS2_SIGNATURE = 0x454E // NE IMAGE_OS2_SIGNATURE_LE = 0x454C // LE IMAGE_VXD_SIGNATURE = 0x454C // LE IMAGE_NT_SIGNATURE = 0x00004550 // PE00 )
View Source
const ( IMAGE_SIZEOF_FILE_HEADER = 20 IMAGE_FILE_RELOCS_STRIPPED = 0x0001 // Relocation info stripped from file. IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002 // File is executable (i.e. no unresolved external references). IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004 // Line nunbers stripped from file. IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008 // Local symbols stripped from file. IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010 // Aggressively trim working set IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020 // App can handle >2gb addresses IMAGE_FILE_BYTES_REVERSED_LO = 0x0080 // Bytes of machine word are reversed. IMAGE_FILE_32BIT_MACHINE = 0x0100 // 32 bit word machine. IMAGE_FILE_DEBUG_STRIPPED = 0x0200 // Debugging info stripped from file in .DBG file IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400 // If Image is on removable media, copy and run from the swap file. IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800 // If Image is on Net, copy and run from the swap file. IMAGE_FILE_SYSTEM = 0x1000 // System File. IMAGE_FILE_DLL = 0x2000 // File is a DLL. IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000 // File should only be run on a UP machine IMAGE_FILE_BYTES_REVERSED_HI = 0x8000 // Bytes of machine word are reversed. IMAGE_FILE_MACHINE_UNKNOWN = 0 IMAGE_FILE_MACHINE_TARGET_HOST = 0x0001 // Useful for indicating we want to interact with the host and not a WoW guest. IMAGE_FILE_MACHINE_I386 = 0x014c // Intel 386. IMAGE_FILE_MACHINE_R3000 = 0x0162 // MIPS little-endian, 0x160 big-endian IMAGE_FILE_MACHINE_R4000 = 0x0166 // MIPS little-endian IMAGE_FILE_MACHINE_R10000 = 0x0168 // MIPS little-endian IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169 // MIPS little-endian WCE v2 IMAGE_FILE_MACHINE_ALPHA = 0x0184 // Alpha_AXP IMAGE_FILE_MACHINE_SH3 = 0x01a2 // SH3 little-endian IMAGE_FILE_MACHINE_SH3DSP = 0x01a3 IMAGE_FILE_MACHINE_SH3E = 0x01a4 // SH3E little-endian IMAGE_FILE_MACHINE_SH4 = 0x01a6 // SH4 little-endian IMAGE_FILE_MACHINE_SH5 = 0x01a8 // SH5 IMAGE_FILE_MACHINE_ARM = 0x01c0 // ARM Little-Endian IMAGE_FILE_MACHINE_THUMB = 0x01c2 // ARM Thumb/Thumb-2 Little-Endian IMAGE_FILE_MACHINE_ARMNT = 0x01c4 // ARM Thumb-2 Little-Endian IMAGE_FILE_MACHINE_AM33 = 0x01d3 IMAGE_FILE_MACHINE_POWERPC = 0x01F0 // IBM PowerPC Little-Endian IMAGE_FILE_MACHINE_POWERPCFP = 0x01f1 IMAGE_FILE_MACHINE_IA64 = 0x0200 // Intel 64 IMAGE_FILE_MACHINE_MIPS16 = 0x0266 // MIPS IMAGE_FILE_MACHINE_ALPHA64 = 0x0284 // ALPHA64 IMAGE_FILE_MACHINE_MIPSFPU = 0x0366 // MIPS IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466 // MIPS IMAGE_FILE_MACHINE_AXP64 = IMAGE_FILE_MACHINE_ALPHA64 IMAGE_FILE_MACHINE_TRICORE = 0x0520 // Infineon IMAGE_FILE_MACHINE_CEF = 0x0CEF IMAGE_FILE_MACHINE_EBC = 0x0EBC // EFI Byte Code IMAGE_FILE_MACHINE_AMD64 = 0x8664 // AMD64 (K8) IMAGE_FILE_MACHINE_M32R = 0x9041 // M32R little-endian IMAGE_FILE_MACHINE_ARM64 = 0xAA64 // ARM64 Little-Endian IMAGE_FILE_MACHINE_CEE = 0xC0EE )
View Source
const ( IMAGE_DIRECTORY_ENTRY_EXPORT = 0 // Export Directory IMAGE_DIRECTORY_ENTRY_IMPORT = 1 // Import Directory IMAGE_DIRECTORY_ENTRY_RESOURCE = 2 // Resource Directory IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3 // Exception Directory IMAGE_DIRECTORY_ENTRY_SECURITY = 4 // Security Directory IMAGE_DIRECTORY_ENTRY_BASERELOC = 5 // Base Relocation Table IMAGE_DIRECTORY_ENTRY_DEBUG = 6 // Debug Directory IMAGE_DIRECTORY_ENTRY_COPYRIGHT = 7 // (X86 usage) IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7 // Architecture Specific Data IMAGE_DIRECTORY_ENTRY_GLOBALPTR = 8 // RVA of GP IMAGE_DIRECTORY_ENTRY_TLS = 9 // TLS Directory IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = 10 // Load Configuration Directory IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT = 11 // Bound Import Directory in headers IMAGE_DIRECTORY_ENTRY_IAT = 12 // Import Address Table IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13 // Delay Load Import Descriptors IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14 // COM Runtime descriptor )
View Source
const ( // Dll characteristics. IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA = 0x0020 IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x0040 IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY = 0x0080 IMAGE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100 IMAGE_DLL_CHARACTERISTICS_NO_ISOLATION = 0x0200 IMAGE_DLL_CHARACTERISTICS_NO_SEH = 0x0400 IMAGE_DLL_CHARACTERISTICS_NO_BIND = 0x0800 IMAGE_DLL_CHARACTERISTICS_APPCONTAINER = 0x1000 IMAGE_DLL_CHARACTERISTICS_WDM_DRIVER = 0x2000 IMAGE_DLL_CHARACTERISTICS_GUARD_CF = 0x4000 IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000 )
View Source
const ( // Section characteristics. IMAGE_SCN_TYPE_REG = 0x00000000 // Reserved. IMAGE_SCN_TYPE_DSECT = 0x00000001 // Reserved. IMAGE_SCN_TYPE_NOLOAD = 0x00000002 // Reserved. IMAGE_SCN_TYPE_GROUP = 0x00000004 // Reserved. IMAGE_SCN_TYPE_NO_PAD = 0x00000008 // Reserved. IMAGE_SCN_TYPE_COPY = 0x00000010 // Reserved. IMAGE_SCN_CNT_CODE = 0x00000020 // Section contains code. IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040 // Section contains initialized data. IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080 // Section contains uninitialized data. IMAGE_SCN_LNK_OTHER = 0x00000100 // Reserved. IMAGE_SCN_LNK_INFO = 0x00000200 // Section contains comments or some other type of information. IMAGE_SCN_TYPE_OVER = 0x00000400 // Reserved. IMAGE_SCN_LNK_REMOVE = 0x00000800 // Section contents will not become part of image. IMAGE_SCN_LNK_COMDAT = 0x00001000 // Section contents comdat. IMAGE_SCN_MEM_PROTECTED = 0x00004000 // Obsolete. IMAGE_SCN_NO_DEFER_SPEC_EXC = 0x00004000 // Reset speculative exceptions handling bits in the TLB entries for this section. IMAGE_SCN_GPREL = 0x00008000 // Section content can be accessed relative to GP IMAGE_SCN_MEM_FARDATA = 0x00008000 IMAGE_SCN_MEM_SYSHEAP = 0x00010000 // Obsolete. IMAGE_SCN_MEM_PURGEABLE = 0x00020000 IMAGE_SCN_MEM_16BIT = 0x00020000 IMAGE_SCN_MEM_LOCKED = 0x00040000 IMAGE_SCN_MEM_PRELOAD = 0x00080000 IMAGE_SCN_ALIGN_1BYTES = 0x00100000 // IMAGE_SCN_ALIGN_2BYTES = 0x00200000 // IMAGE_SCN_ALIGN_4BYTES = 0x00300000 // IMAGE_SCN_ALIGN_8BYTES = 0x00400000 // IMAGE_SCN_ALIGN_16BYTES = 0x00500000 // Default alignment if no others are specified. IMAGE_SCN_ALIGN_32BYTES = 0x00600000 // IMAGE_SCN_ALIGN_64BYTES = 0x00700000 // IMAGE_SCN_ALIGN_128BYTES = 0x00800000 // IMAGE_SCN_ALIGN_256BYTES = 0x00900000 // IMAGE_SCN_ALIGN_512BYTES = 0x00A00000 // IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000 // IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000 // IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000 // IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000 // IMAGE_SCN_ALIGN_MASK = 0x00F00000 IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000 // Section contains extended relocations. IMAGE_SCN_MEM_DISCARDABLE = 0x02000000 // Section can be discarded. IMAGE_SCN_MEM_NOT_CACHED = 0x04000000 // Section is not cachable. IMAGE_SCN_MEM_NOT_PAGED = 0x08000000 // Section is not pageable. IMAGE_SCN_MEM_SHARED = 0x10000000 // Section is shareable. IMAGE_SCN_MEM_EXECUTE = 0x20000000 // Section is executable. IMAGE_SCN_MEM_READ = 0x40000000 // Section is readable. IMAGE_SCN_MEM_WRITE = 0x80000000 // Section is writeable. // TLS Characteristic Flags IMAGE_SCN_SCALE_INDEX = 0x00000001 // Tls index is scaled. )
View Source
const ( IMAGE_REL_BASED_ABSOLUTE = 0 IMAGE_REL_BASED_HIGH = 1 IMAGE_REL_BASED_LOW = 2 IMAGE_REL_BASED_HIGHLOW = 3 IMAGE_REL_BASED_HIGHADJ = 4 IMAGE_REL_BASED_MACHINE_SPECIFIC_5 = 5 IMAGE_REL_BASED_RESERVED = 6 IMAGE_REL_BASED_MACHINE_SPECIFIC_7 = 7 IMAGE_REL_BASED_MACHINE_SPECIFIC_8 = 8 IMAGE_REL_BASED_MACHINE_SPECIFIC_9 = 9 IMAGE_REL_BASED_DIR64 = 10 IMAGE_REL_BASED_IA64_IMM64 = 9 IMAGE_REL_BASED_MIPS_JMPADDR = 5 IMAGE_REL_BASED_MIPS_JMPADDR16 = 9 IMAGE_REL_BASED_ARM_MOV32 = 5 IMAGE_REL_BASED_THUMB_MOV32 = 7 )
View Source
const ( IMAGE_GUARD_CF_INSTRUMENTED = 0x00000100 IMAGE_GUARD_CFW_INSTRUMENTED = 0x00000200 IMAGE_GUARD_CF_FUNCTION_TABLE_PRESENT = 0x00000400 IMAGE_GUARD_SECURITY_COOKIE_UNUSED = 0x00000800 IMAGE_GUARD_PROTECT_DELAYLOAD_IAT = 0x00001000 IMAGE_GUARD_DELAYLOAD_IAT_IN_ITS_OWN_SECTION = 0x00002000 IMAGE_GUARD_CF_EXPORT_SUPPRESSION_INFO_PRESENT = 0x00004000 IMAGE_GUARD_CF_ENABLE_EXPORT_SUPPRESSION = 0x00008000 IMAGE_GUARD_CF_LONGJUMP_TABLE_PRESENT = 0x00010000 IMAGE_GUARD_RF_INSTRUMENTED = 0x00020000 IMAGE_GUARD_RF_ENABLE = 0x00040000 IMAGE_GUARD_RF_STRICT = 0x00080000 IMAGE_GUARD_RETPOLINE_PRESENT = 0x00100000 IMAGE_GUARD_EH_CONTINUATION_TABLE_PRESENT = 0x00400000 IMAGE_GUARD_XFG_ENABLED = 0x00800000 IMAGE_GUARD_CF_FUNCTION_TABLE_SIZE_MASK = 0xF0000000 IMAGE_GUARD_CF_FUNCTION_TABLE_SIZE_SHIFT = 28 )
View Source
const ( DLL_PROCESS_ATTACH = 1 DLL_THREAD_ATTACH = 2 DLL_THREAD_DETACH = 3 DLL_PROCESS_DETACH = 0 )
View Source
const IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16
View Source
const IMAGE_ORDINAL_FLAG uintptr = 0x8000000000000000
View Source
const IMAGE_SIZEOF_SHORT_NAME = 8
Variables ¶
This section is empty.
Functions ¶
func IMAGE_ORDINAL ¶
func IMAGE_SNAP_BY_ORDINAL ¶
Types ¶
type IMAGE_BASE_RELOCATION ¶
Based relocation format
type IMAGE_DATA_DIRECTORY ¶
Directory format
type IMAGE_DOS_HEADER ¶
type IMAGE_DOS_HEADER struct {
E_magic uint16 // Magic number
E_cblp uint16 // Bytes on last page of file
E_cp uint16 // Pages in file
E_crlc uint16 // Relocations
E_cparhdr uint16 // Size of header in paragraphs
E_minalloc uint16 // Minimum extra paragraphs needed
E_maxalloc uint16 // Maximum extra paragraphs needed
E_ss uint16 // Initial (relative) SS value
E_sp uint16 // Initial SP value
E_csum uint16 // Checksum
E_ip uint16 // Initial IP value
E_cs uint16 // Initial (relative) CS value
E_lfarlc uint16 // File address of relocation table
E_ovno uint16 // Overlay number
E_res [4]uint16 // Reserved words
E_oemid uint16 // OEM identifier (for e_oeminfo)
E_oeminfo uint16 // OEM information; e_oemid specific
E_res2 [10]uint16 // Reserved words
E_lfanew int32 // File address of new exe header
}
DOS .EXE header
type IMAGE_EXPORT_DIRECTORY ¶
type IMAGE_EXPORT_DIRECTORY struct {
Characteristics uint32
TimeDateStamp uint32
MajorVersion uint16
MinorVersion uint16
Name uint32
Base uint32
NumberOfFunctions uint32
NumberOfNames uint32
AddressOfFunctions uint32 // RVA from base of image
AddressOfNames uint32 // RVA from base of image
AddressOfNameOrdinals uint32 // RVA from base of image
}
Export Format
type IMAGE_FILE_HEADER ¶
type IMAGE_FILE_HEADER struct {
Machine uint16
NumberOfSections uint16
TimeDateStamp uint32
PointerToSymbolTable uint32
NumberOfSymbols uint32
SizeOfOptionalHeader uint16
Characteristics uint16
}
File header format
type IMAGE_IMPORT_BY_NAME ¶
type IMAGE_IMPORT_DESCRIPTOR ¶
type IMAGE_IMPORT_DESCRIPTOR struct {
// RVA to original unbound IAT (PIMAGE_THUNK_DATA)
TimeDateStamp uint32 // 0 if not bound,
// -1 if bound, and real date\time stamp
// in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
// O.W. date/time stamp of DLL bound to (Old BIND)
ForwarderChain uint32 // -1 if no forwarders
Name uint32
FirstThunk uint32 // RVA to IAT (if bound this IAT has actual addresses)
// contains filtered or unexported fields
}
func (*IMAGE_IMPORT_DESCRIPTOR) Characteristics ¶
func (imgimpdesc *IMAGE_IMPORT_DESCRIPTOR) Characteristics() uint32
func (*IMAGE_IMPORT_DESCRIPTOR) OriginalFirstThunk ¶
func (imgimpdesc *IMAGE_IMPORT_DESCRIPTOR) OriginalFirstThunk() uint32
type IMAGE_LOAD_CONFIG_DIRECTORY ¶
type IMAGE_LOAD_CONFIG_DIRECTORY struct {
Size uint32
TimeDateStamp uint32
MajorVersion uint16
MinorVersion uint16
GlobalFlagsClear uint32
GlobalFlagsSet uint32
CriticalSectionDefaultTimeout uint32
DeCommitFreeBlockThreshold uint64
DeCommitTotalFreeThreshold uint64
LockPrefixTable uint64
MaximumAllocationSize uint64
VirtualMemoryThreshold uint64
ProcessAffinityMask uint64
ProcessHeapFlags uint32
CSDVersion uint16
DependentLoadFlags uint16
EditList uint64
SecurityCookie uint64
SEHandlerTable uint64
SEHandlerCount uint64
GuardCFCheckFunctionPointer uint64
GuardCFDispatchFunctionPointer uint64
GuardCFFunctionTable uint64
GuardCFFunctionCount uint64
GuardFlags uint32
CodeIntegrity IMAGE_LOAD_CONFIG_CODE_INTEGRITY
GuardAddressTakenIatEntryTable uint64
GuardAddressTakenIatEntryCount uint64
GuardLongJumpTargetTable uint64
GuardLongJumpTargetCount uint64
DynamicValueRelocTable uint64
CHPEMetadataPointer uint64
GuardRFFailureRoutine uint64
GuardRFFailureRoutineFunctionPointer uint64
DynamicValueRelocTableOffset uint32
DynamicValueRelocTableSection uint16
Reserved2 uint16
GuardRFVerifyStackPointerFunctionPointer uint64
HotPatchTableOffset uint32
Reserved3 uint32
EnclaveConfigurationPointer uint64
VolatileMetadataPointer uint64
GuardEHContinuationTable uint64
GuardEHContinuationCount uint64
GuardXFGCheckFunctionPointer uint64
GuardXFGDispatchFunctionPointer uint64
GuardXFGTableDispatchFunctionPointer uint64
CastGuardOsDeterminedFailureMode uint64
}
type IMAGE_NT_HEADERS ¶
type IMAGE_NT_HEADERS struct {
Signature uint32
FileHeader IMAGE_FILE_HEADER
OptionalHeader IMAGE_OPTIONAL_HEADER
}
func (*IMAGE_NT_HEADERS) Sections ¶
func (ntheader *IMAGE_NT_HEADERS) Sections() []IMAGE_SECTION_HEADER
type IMAGE_OPTIONAL_HEADER ¶
type IMAGE_OPTIONAL_HEADER struct {
Magic uint16
MajorLinkerVersion uint8
MinorLinkerVersion uint8
SizeOfCode uint32
SizeOfInitializedData uint32
SizeOfUninitializedData uint32
AddressOfEntryPoint uint32
BaseOfCode uint32
ImageBase uintptr
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 uintptr
SizeOfStackCommit uintptr
SizeOfHeapReserve uintptr
SizeOfHeapCommit uintptr
LoaderFlags uint32
NumberOfRvaAndSizes uint32
DataDirectory [IMAGE_NUMBEROF_DIRECTORY_ENTRIES]IMAGE_DATA_DIRECTORY
}
Optional header format
type IMAGE_SECTION_HEADER ¶
type IMAGE_SECTION_HEADER struct {
Name [IMAGE_SIZEOF_SHORT_NAME]byte
VirtualAddress uint32
SizeOfRawData uint32
PointerToRawData uint32
PointerToRelocations uint32
PointerToLinenumbers uint32
NumberOfRelocations uint16
NumberOfLinenumbers uint16
Characteristics uint32
// contains filtered or unexported fields
}
Section header format
func (*IMAGE_SECTION_HEADER) PhysicalAddress ¶
func (ishdr *IMAGE_SECTION_HEADER) PhysicalAddress() uint32
func (*IMAGE_SECTION_HEADER) SetPhysicalAddress ¶
func (ishdr *IMAGE_SECTION_HEADER) SetPhysicalAddress(addr uint32)
func (*IMAGE_SECTION_HEADER) SetVirtualSize ¶
func (ishdr *IMAGE_SECTION_HEADER) SetVirtualSize(addr uint32)
func (*IMAGE_SECTION_HEADER) VirtualSize ¶
func (ishdr *IMAGE_SECTION_HEADER) VirtualSize() uint32
type IMAGE_TLS_DIRECTORY ¶
type IMAGE_TLS_DIRECTORY struct {
StartAddressOfRawData uintptr
EndAddressOfRawData uintptr
AddressOfIndex uintptr // PDWORD
AddressOfCallbacks uintptr // PIMAGE_TLS_CALLBACK *;
SizeOfZeroFill uint32
Characteristics uint32
}
Thread Local Storage
type Module ¶
type Module struct {
// contains filtered or unexported fields
}
func LoadLibrary ¶
LoadLibrary loads module image to memory.
func (*Module) ProcAddressByName ¶
ProcAddressByName returns function address by exported name.
type SYSTEM_INFO ¶
type SYSTEM_INFO struct {
ProcessorArchitecture uint16
Reserved uint16
PageSize uint32
MinimumApplicationAddress uintptr
MaximumApplicationAddress uintptr
ActiveProcessorMask uintptr
NumberOfProcessors uint32
ProcessorType uint32
AllocationGranularity uint32
ProcessorLevel uint16
ProcessorRevision uint16
}
Click to show internal directories.
Click to hide internal directories.