2021-10-11 22:53:36 +02:00
|
|
|
//go:build (windows && amd64) || (windows && arm64)
|
2020-11-06 05:24:50 +01:00
|
|
|
|
|
|
|
/* SPDX-License-Identifier: MIT
|
|
|
|
*
|
2021-01-28 17:52:15 +01:00
|
|
|
* Copyright (C) 2017-2021 WireGuard LLC. All Rights Reserved.
|
2020-11-06 05:24:50 +01:00
|
|
|
*/
|
|
|
|
|
|
|
|
package memmod
|
|
|
|
|
|
|
|
// Optional header format
|
|
|
|
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
|
|
|
|
}
|
|
|
|
|
|
|
|
const IMAGE_ORDINAL_FLAG uintptr = 0x8000000000000000
|
2021-07-29 01:01:46 +02:00
|
|
|
|
|
|
|
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
|
|
|
|
}
|