mirror of
https://github.com/3xpl01tc0d3r/ProcessInjection
synced 2026-06-06 15:14:27 +00:00
645 lines
26 KiB
C#
645 lines
26 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace ProcessInjection.Native
|
|
{
|
|
public static class Enum
|
|
{
|
|
public enum PROCESSINFOCLASS : int
|
|
{
|
|
ProcessBasicInformation = 0, // 0, q: PROCESS_BASIC_INFORMATION, PROCESS_EXTENDED_BASIC_INFORMATION
|
|
ProcessQuotaLimits, // qs: QUOTA_LIMITS, QUOTA_LIMITS_EX
|
|
ProcessIoCounters, // q: IO_COUNTERS
|
|
ProcessVmCounters, // q: VM_COUNTERS, VM_COUNTERS_EX
|
|
ProcessTimes, // q: KERNEL_USER_TIMES
|
|
ProcessBasePriority, // s: KPRIORITY
|
|
ProcessRaisePriority, // s: ULONG
|
|
ProcessDebugPort, // q: HANDLE
|
|
ProcessExceptionPort, // s: HANDLE
|
|
ProcessAccessToken, // s: PROCESS_ACCESS_TOKEN
|
|
ProcessLdtInformation, // 10
|
|
ProcessLdtSize,
|
|
ProcessDefaultHardErrorMode, // qs: ULONG
|
|
ProcessIoPortHandlers, // (kernel-mode only)
|
|
ProcessPooledUsageAndLimits, // q: POOLED_USAGE_AND_LIMITS
|
|
ProcessWorkingSetWatch, // q: PROCESS_WS_WATCH_INFORMATION[]; s: void
|
|
ProcessUserModeIOPL,
|
|
ProcessEnableAlignmentFaultFixup, // s: BOOLEAN
|
|
ProcessPriorityClass, // qs: PROCESS_PRIORITY_CLASS
|
|
ProcessWx86Information,
|
|
ProcessHandleCount, // 20, q: ULONG, PROCESS_HANDLE_INFORMATION
|
|
ProcessAffinityMask, // s: KAFFINITY
|
|
ProcessPriorityBoost, // qs: ULONG
|
|
ProcessDeviceMap, // qs: PROCESS_DEVICEMAP_INFORMATION, PROCESS_DEVICEMAP_INFORMATION_EX
|
|
ProcessSessionInformation, // q: PROCESS_SESSION_INFORMATION
|
|
ProcessForegroundInformation, // s: PROCESS_FOREGROUND_BACKGROUND
|
|
ProcessWow64Information, // q: ULONG_PTR
|
|
ProcessImageFileName, // q: UNICODE_STRING
|
|
ProcessLUIDDeviceMapsEnabled, // q: ULONG
|
|
ProcessBreakOnTermination, // qs: ULONG
|
|
ProcessDebugObjectHandle, // 30, q: HANDLE
|
|
ProcessDebugFlags, // qs: ULONG
|
|
ProcessHandleTracing, // q: PROCESS_HANDLE_TRACING_QUERY; s: size 0 disables, otherwise enables
|
|
ProcessIoPriority, // qs: ULONG
|
|
ProcessExecuteFlags, // qs: ULONG
|
|
ProcessResourceManagement,
|
|
ProcessCookie, // q: ULONG
|
|
ProcessImageInformation, // q: SECTION_IMAGE_INFORMATION
|
|
ProcessCycleTime, // q: PROCESS_CYCLE_TIME_INFORMATION
|
|
ProcessPagePriority, // q: ULONG
|
|
ProcessInstrumentationCallback, // 40
|
|
ProcessThreadStackAllocation, // s: PROCESS_STACK_ALLOCATION_INFORMATION, PROCESS_STACK_ALLOCATION_INFORMATION_EX
|
|
ProcessWorkingSetWatchEx, // q: PROCESS_WS_WATCH_INFORMATION_EX[]
|
|
ProcessImageFileNameWin32, // q: UNICODE_STRING
|
|
ProcessImageFileMapping, // q: HANDLE (input)
|
|
ProcessAffinityUpdateMode, // qs: PROCESS_AFFINITY_UPDATE_MODE
|
|
ProcessMemoryAllocationMode, // qs: PROCESS_MEMORY_ALLOCATION_MODE
|
|
ProcessGroupInformation, // q: USHORT[]
|
|
ProcessTokenVirtualizationEnabled, // s: ULONG
|
|
ProcessConsoleHostProcess, // q: ULONG_PTR
|
|
ProcessWindowInformation, // 50, q: PROCESS_WINDOW_INFORMATION
|
|
ProcessHandleInformation, // q: PROCESS_HANDLE_SNAPSHOT_INFORMATION // since WIN8
|
|
ProcessMitigationPolicy, // s: PROCESS_MITIGATION_POLICY_INFORMATION
|
|
ProcessDynamicFunctionTableInformation,
|
|
ProcessHandleCheckingMode,
|
|
ProcessKeepAliveCount, // q: PROCESS_KEEPALIVE_COUNT_INFORMATION
|
|
ProcessRevokeFileHandles, // s: PROCESS_REVOKE_FILE_HANDLES_INFORMATION
|
|
MaxProcessInfoClass
|
|
};
|
|
|
|
/// <summary>
|
|
/// NTSTATUS is an undocument enum. https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/596a1078-e883-4972-9bbc-49e60bebca55
|
|
/// https://www.pinvoke.net/default.aspx/Enums/NtStatus.html
|
|
/// </summary>
|
|
public enum NTSTATUS : uint
|
|
{
|
|
// Success
|
|
Success = 0x00000000,
|
|
Wait0 = 0x00000000,
|
|
Wait1 = 0x00000001,
|
|
Wait2 = 0x00000002,
|
|
Wait3 = 0x00000003,
|
|
Wait63 = 0x0000003f,
|
|
Abandoned = 0x00000080,
|
|
AbandonedWait0 = 0x00000080,
|
|
AbandonedWait1 = 0x00000081,
|
|
AbandonedWait2 = 0x00000082,
|
|
AbandonedWait3 = 0x00000083,
|
|
AbandonedWait63 = 0x000000bf,
|
|
UserApc = 0x000000c0,
|
|
KernelApc = 0x00000100,
|
|
Alerted = 0x00000101,
|
|
Timeout = 0x00000102,
|
|
Pending = 0x00000103,
|
|
Reparse = 0x00000104,
|
|
MoreEntries = 0x00000105,
|
|
NotAllAssigned = 0x00000106,
|
|
SomeNotMapped = 0x00000107,
|
|
OpLockBreakInProgress = 0x00000108,
|
|
VolumeMounted = 0x00000109,
|
|
RxActCommitted = 0x0000010a,
|
|
NotifyCleanup = 0x0000010b,
|
|
NotifyEnumDir = 0x0000010c,
|
|
NoQuotasForAccount = 0x0000010d,
|
|
PrimaryTransportConnectFailed = 0x0000010e,
|
|
PageFaultTransition = 0x00000110,
|
|
PageFaultDemandZero = 0x00000111,
|
|
PageFaultCopyOnWrite = 0x00000112,
|
|
PageFaultGuardPage = 0x00000113,
|
|
PageFaultPagingFile = 0x00000114,
|
|
CrashDump = 0x00000116,
|
|
ReparseObject = 0x00000118,
|
|
NothingToTerminate = 0x00000122,
|
|
ProcessNotInJob = 0x00000123,
|
|
ProcessInJob = 0x00000124,
|
|
ProcessCloned = 0x00000129,
|
|
FileLockedWithOnlyReaders = 0x0000012a,
|
|
FileLockedWithWriters = 0x0000012b,
|
|
|
|
// Informational
|
|
Informational = 0x40000000,
|
|
ObjectNameExists = 0x40000000,
|
|
ThreadWasSuspended = 0x40000001,
|
|
WorkingSetLimitRange = 0x40000002,
|
|
ImageNotAtBase = 0x40000003,
|
|
RegistryRecovered = 0x40000009,
|
|
|
|
// Warning
|
|
Warning = 0x80000000,
|
|
GuardPageViolation = 0x80000001,
|
|
DatatypeMisalignment = 0x80000002,
|
|
Breakpoint = 0x80000003,
|
|
SingleStep = 0x80000004,
|
|
BufferOverflow = 0x80000005,
|
|
NoMoreFiles = 0x80000006,
|
|
HandlesClosed = 0x8000000a,
|
|
PartialCopy = 0x8000000d,
|
|
DeviceBusy = 0x80000011,
|
|
InvalidEaName = 0x80000013,
|
|
EaListInconsistent = 0x80000014,
|
|
NoMoreEntries = 0x8000001a,
|
|
LongJump = 0x80000026,
|
|
DllMightBeInsecure = 0x8000002b,
|
|
|
|
// Error
|
|
Error = 0xc0000000,
|
|
Unsuccessful = 0xc0000001,
|
|
NotImplemented = 0xc0000002,
|
|
InvalidInfoClass = 0xc0000003,
|
|
InfoLengthMismatch = 0xc0000004,
|
|
AccessViolation = 0xc0000005,
|
|
InPageError = 0xc0000006,
|
|
PagefileQuota = 0xc0000007,
|
|
InvalidHandle = 0xc0000008,
|
|
BadInitialStack = 0xc0000009,
|
|
BadInitialPc = 0xc000000a,
|
|
InvalidCid = 0xc000000b,
|
|
TimerNotCanceled = 0xc000000c,
|
|
InvalidParameter = 0xc000000d,
|
|
NoSuchDevice = 0xc000000e,
|
|
NoSuchFile = 0xc000000f,
|
|
InvalidDeviceRequest = 0xc0000010,
|
|
EndOfFile = 0xc0000011,
|
|
WrongVolume = 0xc0000012,
|
|
NoMediaInDevice = 0xc0000013,
|
|
NoMemory = 0xc0000017,
|
|
ConflictingAddresses = 0xc0000018,
|
|
NotMappedView = 0xc0000019,
|
|
UnableToFreeVm = 0xc000001a,
|
|
UnableToDeleteSection = 0xc000001b,
|
|
IllegalInstruction = 0xc000001d,
|
|
AlreadyCommitted = 0xc0000021,
|
|
AccessDenied = 0xc0000022,
|
|
BufferTooSmall = 0xc0000023,
|
|
ObjectTypeMismatch = 0xc0000024,
|
|
NonContinuableException = 0xc0000025,
|
|
BadStack = 0xc0000028,
|
|
NotLocked = 0xc000002a,
|
|
NotCommitted = 0xc000002d,
|
|
InvalidParameterMix = 0xc0000030,
|
|
ObjectNameInvalid = 0xc0000033,
|
|
ObjectNameNotFound = 0xc0000034,
|
|
ObjectNameCollision = 0xc0000035,
|
|
ObjectPathInvalid = 0xc0000039,
|
|
ObjectPathNotFound = 0xc000003a,
|
|
ObjectPathSyntaxBad = 0xc000003b,
|
|
DataOverrun = 0xc000003c,
|
|
DataLate = 0xc000003d,
|
|
DataError = 0xc000003e,
|
|
CrcError = 0xc000003f,
|
|
SectionTooBig = 0xc0000040,
|
|
PortConnectionRefused = 0xc0000041,
|
|
InvalidPortHandle = 0xc0000042,
|
|
SharingViolation = 0xc0000043,
|
|
QuotaExceeded = 0xc0000044,
|
|
InvalidPageProtection = 0xc0000045,
|
|
MutantNotOwned = 0xc0000046,
|
|
SemaphoreLimitExceeded = 0xc0000047,
|
|
PortAlreadySet = 0xc0000048,
|
|
SectionNotImage = 0xc0000049,
|
|
SuspendCountExceeded = 0xc000004a,
|
|
ThreadIsTerminating = 0xc000004b,
|
|
BadWorkingSetLimit = 0xc000004c,
|
|
IncompatibleFileMap = 0xc000004d,
|
|
SectionProtection = 0xc000004e,
|
|
EasNotSupported = 0xc000004f,
|
|
EaTooLarge = 0xc0000050,
|
|
NonExistentEaEntry = 0xc0000051,
|
|
NoEasOnFile = 0xc0000052,
|
|
EaCorruptError = 0xc0000053,
|
|
FileLockConflict = 0xc0000054,
|
|
LockNotGranted = 0xc0000055,
|
|
DeletePending = 0xc0000056,
|
|
CtlFileNotSupported = 0xc0000057,
|
|
UnknownRevision = 0xc0000058,
|
|
RevisionMismatch = 0xc0000059,
|
|
InvalidOwner = 0xc000005a,
|
|
InvalidPrimaryGroup = 0xc000005b,
|
|
NoImpersonationToken = 0xc000005c,
|
|
CantDisableMandatory = 0xc000005d,
|
|
NoLogonServers = 0xc000005e,
|
|
NoSuchLogonSession = 0xc000005f,
|
|
NoSuchPrivilege = 0xc0000060,
|
|
PrivilegeNotHeld = 0xc0000061,
|
|
InvalidAccountName = 0xc0000062,
|
|
UserExists = 0xc0000063,
|
|
NoSuchUser = 0xc0000064,
|
|
GroupExists = 0xc0000065,
|
|
NoSuchGroup = 0xc0000066,
|
|
MemberInGroup = 0xc0000067,
|
|
MemberNotInGroup = 0xc0000068,
|
|
LastAdmin = 0xc0000069,
|
|
WrongPassword = 0xc000006a,
|
|
IllFormedPassword = 0xc000006b,
|
|
PasswordRestriction = 0xc000006c,
|
|
LogonFailure = 0xc000006d,
|
|
AccountRestriction = 0xc000006e,
|
|
InvalidLogonHours = 0xc000006f,
|
|
InvalidWorkstation = 0xc0000070,
|
|
PasswordExpired = 0xc0000071,
|
|
AccountDisabled = 0xc0000072,
|
|
NoneMapped = 0xc0000073,
|
|
TooManyLuidsRequested = 0xc0000074,
|
|
LuidsExhausted = 0xc0000075,
|
|
InvalidSubAuthority = 0xc0000076,
|
|
InvalidAcl = 0xc0000077,
|
|
InvalidSid = 0xc0000078,
|
|
InvalidSecurityDescr = 0xc0000079,
|
|
ProcedureNotFound = 0xc000007a,
|
|
InvalidImageFormat = 0xc000007b,
|
|
NoToken = 0xc000007c,
|
|
BadInheritanceAcl = 0xc000007d,
|
|
RangeNotLocked = 0xc000007e,
|
|
DiskFull = 0xc000007f,
|
|
ServerDisabled = 0xc0000080,
|
|
ServerNotDisabled = 0xc0000081,
|
|
TooManyGuidsRequested = 0xc0000082,
|
|
GuidsExhausted = 0xc0000083,
|
|
InvalidIdAuthority = 0xc0000084,
|
|
AgentsExhausted = 0xc0000085,
|
|
InvalidVolumeLabel = 0xc0000086,
|
|
SectionNotExtended = 0xc0000087,
|
|
NotMappedData = 0xc0000088,
|
|
ResourceDataNotFound = 0xc0000089,
|
|
ResourceTypeNotFound = 0xc000008a,
|
|
ResourceNameNotFound = 0xc000008b,
|
|
ArrayBoundsExceeded = 0xc000008c,
|
|
FloatDenormalOperand = 0xc000008d,
|
|
FloatDivideByZero = 0xc000008e,
|
|
FloatInexactResult = 0xc000008f,
|
|
FloatInvalidOperation = 0xc0000090,
|
|
FloatOverflow = 0xc0000091,
|
|
FloatStackCheck = 0xc0000092,
|
|
FloatUnderflow = 0xc0000093,
|
|
IntegerDivideByZero = 0xc0000094,
|
|
IntegerOverflow = 0xc0000095,
|
|
PrivilegedInstruction = 0xc0000096,
|
|
TooManyPagingFiles = 0xc0000097,
|
|
FileInvalid = 0xc0000098,
|
|
InsufficientResources = 0xc000009a,
|
|
InstanceNotAvailable = 0xc00000ab,
|
|
PipeNotAvailable = 0xc00000ac,
|
|
InvalidPipeState = 0xc00000ad,
|
|
PipeBusy = 0xc00000ae,
|
|
IllegalFunction = 0xc00000af,
|
|
PipeDisconnected = 0xc00000b0,
|
|
PipeClosing = 0xc00000b1,
|
|
PipeConnected = 0xc00000b2,
|
|
PipeListening = 0xc00000b3,
|
|
InvalidReadMode = 0xc00000b4,
|
|
IoTimeout = 0xc00000b5,
|
|
FileForcedClosed = 0xc00000b6,
|
|
ProfilingNotStarted = 0xc00000b7,
|
|
ProfilingNotStopped = 0xc00000b8,
|
|
NotSameDevice = 0xc00000d4,
|
|
FileRenamed = 0xc00000d5,
|
|
CantWait = 0xc00000d8,
|
|
PipeEmpty = 0xc00000d9,
|
|
CantTerminateSelf = 0xc00000db,
|
|
InternalError = 0xc00000e5,
|
|
InvalidParameter1 = 0xc00000ef,
|
|
InvalidParameter2 = 0xc00000f0,
|
|
InvalidParameter3 = 0xc00000f1,
|
|
InvalidParameter4 = 0xc00000f2,
|
|
InvalidParameter5 = 0xc00000f3,
|
|
InvalidParameter6 = 0xc00000f4,
|
|
InvalidParameter7 = 0xc00000f5,
|
|
InvalidParameter8 = 0xc00000f6,
|
|
InvalidParameter9 = 0xc00000f7,
|
|
InvalidParameter10 = 0xc00000f8,
|
|
InvalidParameter11 = 0xc00000f9,
|
|
InvalidParameter12 = 0xc00000fa,
|
|
ProcessIsTerminating = 0xc000010a,
|
|
MappedFileSizeZero = 0xc000011e,
|
|
TooManyOpenedFiles = 0xc000011f,
|
|
Cancelled = 0xc0000120,
|
|
CannotDelete = 0xc0000121,
|
|
InvalidComputerName = 0xc0000122,
|
|
FileDeleted = 0xc0000123,
|
|
SpecialAccount = 0xc0000124,
|
|
SpecialGroup = 0xc0000125,
|
|
SpecialUser = 0xc0000126,
|
|
MembersPrimaryGroup = 0xc0000127,
|
|
FileClosed = 0xc0000128,
|
|
TooManyThreads = 0xc0000129,
|
|
ThreadNotInProcess = 0xc000012a,
|
|
TokenAlreadyInUse = 0xc000012b,
|
|
PagefileQuotaExceeded = 0xc000012c,
|
|
CommitmentLimit = 0xc000012d,
|
|
InvalidImageLeFormat = 0xc000012e,
|
|
InvalidImageNotMz = 0xc000012f,
|
|
InvalidImageProtect = 0xc0000130,
|
|
InvalidImageWin16 = 0xc0000131,
|
|
LogonServer = 0xc0000132,
|
|
DifferenceAtDc = 0xc0000133,
|
|
SynchronizationRequired = 0xc0000134,
|
|
DllNotFound = 0xc0000135,
|
|
IoPrivilegeFailed = 0xc0000137,
|
|
OrdinalNotFound = 0xc0000138,
|
|
EntryPointNotFound = 0xc0000139,
|
|
ControlCExit = 0xc000013a,
|
|
InvalidAddress = 0xc0000141,
|
|
PortNotSet = 0xc0000353,
|
|
DebuggerInactive = 0xc0000354,
|
|
CallbackBypass = 0xc0000503,
|
|
PortClosed = 0xc0000700,
|
|
MessageLost = 0xc0000701,
|
|
InvalidMessage = 0xc0000702,
|
|
RequestCanceled = 0xc0000703,
|
|
RecursiveDispatch = 0xc0000704,
|
|
LpcReceiveBufferExpected = 0xc0000705,
|
|
LpcInvalidConnectionUsage = 0xc0000706,
|
|
LpcRequestsNotAllowed = 0xc0000707,
|
|
ResourceInUse = 0xc0000708,
|
|
ProcessIsProtected = 0xc0000712,
|
|
VolumeDirty = 0xc0000806,
|
|
FileCheckedOut = 0xc0000901,
|
|
CheckOutRequired = 0xc0000902,
|
|
BadFileType = 0xc0000903,
|
|
FileTooLarge = 0xc0000904,
|
|
FormsAuthRequired = 0xc0000905,
|
|
VirusInfected = 0xc0000906,
|
|
VirusDeleted = 0xc0000907,
|
|
TransactionalConflict = 0xc0190001,
|
|
InvalidTransaction = 0xc0190002,
|
|
TransactionNotActive = 0xc0190003,
|
|
TmInitializationFailed = 0xc0190004,
|
|
RmNotActive = 0xc0190005,
|
|
RmMetadataCorrupt = 0xc0190006,
|
|
TransactionNotJoined = 0xc0190007,
|
|
DirectoryNotRm = 0xc0190008,
|
|
CouldNotResizeLog = 0xc0190009,
|
|
TransactionsUnsupportedRemote = 0xc019000a,
|
|
LogResizeInvalidSize = 0xc019000b,
|
|
RemoteFileVersionMismatch = 0xc019000c,
|
|
CrmProtocolAlreadyExists = 0xc019000f,
|
|
TransactionPropagationFailed = 0xc0190010,
|
|
CrmProtocolNotFound = 0xc0190011,
|
|
TransactionSuperiorExists = 0xc0190012,
|
|
TransactionRequestNotValid = 0xc0190013,
|
|
TransactionNotRequested = 0xc0190014,
|
|
TransactionAlreadyAborted = 0xc0190015,
|
|
TransactionAlreadyCommitted = 0xc0190016,
|
|
TransactionInvalidMarshallBuffer = 0xc0190017,
|
|
CurrentTransactionNotValid = 0xc0190018,
|
|
LogGrowthFailed = 0xc0190019,
|
|
ObjectNoLongerExists = 0xc0190021,
|
|
StreamMiniversionNotFound = 0xc0190022,
|
|
StreamMiniversionNotValid = 0xc0190023,
|
|
MiniversionInaccessibleFromSpecifiedTransaction = 0xc0190024,
|
|
CantOpenMiniversionWithModifyIntent = 0xc0190025,
|
|
CantCreateMoreStreamMiniversions = 0xc0190026,
|
|
HandleNoLongerValid = 0xc0190028,
|
|
NoTxfMetadata = 0xc0190029,
|
|
LogCorruptionDetected = 0xc0190030,
|
|
CantRecoverWithHandleOpen = 0xc0190031,
|
|
RmDisconnected = 0xc0190032,
|
|
EnlistmentNotSuperior = 0xc0190033,
|
|
RecoveryNotNeeded = 0xc0190034,
|
|
RmAlreadyStarted = 0xc0190035,
|
|
FileIdentityNotPersistent = 0xc0190036,
|
|
CantBreakTransactionalDependency = 0xc0190037,
|
|
CantCrossRmBoundary = 0xc0190038,
|
|
TxfDirNotEmpty = 0xc0190039,
|
|
IndoubtTransactionsExist = 0xc019003a,
|
|
TmVolatile = 0xc019003b,
|
|
RollbackTimerExpired = 0xc019003c,
|
|
TxfAttributeCorrupt = 0xc019003d,
|
|
EfsNotAllowedInTransaction = 0xc019003e,
|
|
TransactionalOpenNotAllowed = 0xc019003f,
|
|
TransactedMappingUnsupportedRemote = 0xc0190040,
|
|
TxfMetadataAlreadyPresent = 0xc0190041,
|
|
TransactionScopeCallbacksNotSet = 0xc0190042,
|
|
TransactionRequiredPromotion = 0xc0190043,
|
|
CannotExecuteFileInTransaction = 0xc0190044,
|
|
TransactionsNotFrozen = 0xc0190045,
|
|
|
|
MaximumNtStatus = 0xffffffff
|
|
}
|
|
|
|
|
|
[Flags]
|
|
public enum FileAccessFlags : uint
|
|
{
|
|
DELETE = 0x10000,
|
|
FILE_READ_DATA = 0x1,
|
|
FILE_READ_ATTRIBUTES = 0x80,
|
|
FILE_READ_EA = 0x8,
|
|
READ_CONTROL = 0x20000,
|
|
FILE_WRITE_DATA = 0x2,
|
|
FILE_WRITE_ATTRIBUTES = 0x100,
|
|
FILE_WRITE_EA = 0x10,
|
|
FILE_APPEND_DATA = 0x4,
|
|
WRITE_DAC = 0x40000,
|
|
WRITE_OWNER = 0x80000,
|
|
SYNCHRONIZE = 0x100000,
|
|
FILE_EXECUTE = 0x20
|
|
}
|
|
|
|
[Flags]
|
|
public enum FileShareFlags : uint
|
|
{
|
|
FILE_SHARE_NONE = 0x0,
|
|
FILE_SHARE_READ = 0x1,
|
|
FILE_SHARE_WRITE = 0x2,
|
|
FILE_SHARE_DELETE = 0x4
|
|
}
|
|
|
|
[Flags]
|
|
public enum FileOpenFlags : uint
|
|
{
|
|
FILE_DIRECTORY_FILE = 0x1,
|
|
FILE_WRITE_THROUGH = 0x2,
|
|
FILE_SEQUENTIAL_ONLY = 0x4,
|
|
FILE_NO_INTERMEDIATE_BUFFERING = 0x8,
|
|
FILE_SYNCHRONOUS_IO_ALERT = 0x10,
|
|
FILE_SYNCHRONOUS_IO_NONALERT = 0x20,
|
|
FILE_NON_DIRECTORY_FILE = 0x40,
|
|
FILE_CREATE_TREE_CONNECTION = 0x80,
|
|
FILE_COMPLETE_IF_OPLOCKED = 0x100,
|
|
FILE_NO_EA_KNOWLEDGE = 0x200,
|
|
FILE_OPEN_FOR_RECOVERY = 0x400,
|
|
FILE_RANDOM_ACCESS = 0x800,
|
|
FILE_DELETE_ON_CLOSE = 0x1000,
|
|
FILE_OPEN_BY_FILE_ID = 0x2000,
|
|
FILE_OPEN_FOR_BACKUP_INTENT = 0x4000,
|
|
FILE_NO_COMPRESSION = 0x8000
|
|
}
|
|
|
|
[Flags]
|
|
public enum ACCESS_MASK : uint
|
|
{
|
|
DELETE = 0x00010000,
|
|
READ_CONTROL = 0x00020000,
|
|
WRITE_DAC = 0x00040000,
|
|
WRITE_OWNER = 0x00080000,
|
|
SYNCHRONIZE = 0x00100000,
|
|
STANDARD_RIGHTS_REQUIRED = 0x000F0000,
|
|
STANDARD_RIGHTS_READ = 0x00020000,
|
|
STANDARD_RIGHTS_WRITE = 0x00020000,
|
|
STANDARD_RIGHTS_EXECUTE = 0x00020000,
|
|
STANDARD_RIGHTS_ALL = 0x001F0000,
|
|
SPECIFIC_RIGHTS_ALL = 0x0000FFF,
|
|
ACCESS_SYSTEM_SECURITY = 0x01000000,
|
|
MAXIMUM_ALLOWED = 0x02000000,
|
|
DynamicInvoke_READ = 0x80000000,
|
|
DynamicInvoke_WRITE = 0x40000000,
|
|
DynamicInvoke_EXECUTE = 0x20000000,
|
|
DynamicInvoke_ALL = 0x10000000,
|
|
DESKTOP_READOBJECTS = 0x00000001,
|
|
DESKTOP_CREATEWINDOW = 0x00000002,
|
|
DESKTOP_CREATEMENU = 0x00000004,
|
|
DESKTOP_HOOKCONTROL = 0x00000008,
|
|
DESKTOP_JOURNALRECORD = 0x00000010,
|
|
DESKTOP_JOURNALPLAYBACK = 0x00000020,
|
|
DESKTOP_ENUMERATE = 0x00000040,
|
|
DESKTOP_WRITEOBJECTS = 0x00000080,
|
|
DESKTOP_SWITCHDESKTOP = 0x00000100,
|
|
WINSTA_ENUMDESKTOPS = 0x00000001,
|
|
WINSTA_READATTRIBUTES = 0x00000002,
|
|
WINSTA_ACCESSCLIPBOARD = 0x00000004,
|
|
WINSTA_CREATEDESKTOP = 0x00000008,
|
|
WINSTA_WRITEATTRIBUTES = 0x00000010,
|
|
WINSTA_ACCESSGLOBALATOMS = 0x00000020,
|
|
WINSTA_EXITWINDOWS = 0x00000040,
|
|
WINSTA_ENUMERATE = 0x00000100,
|
|
WINSTA_READSCREEN = 0x00000200,
|
|
WINSTA_ALL_ACCESS = 0x0000037F,
|
|
|
|
SECTION_ALL_ACCESS = 0x10000000,
|
|
SECTION_QUERY = 0x0001,
|
|
SECTION_MAP_WRITE = 0x0002,
|
|
SECTION_MAP_READ = 0x0004,
|
|
SECTION_MAP_EXECUTE = 0x0008,
|
|
SECTION_EXTEND_SIZE = 0x0010
|
|
}
|
|
|
|
[Flags]
|
|
public enum ProcThreadAttribute : int
|
|
{
|
|
MITIGATION_POLICY = 0x20007,
|
|
PARENT_PROCESS = 0x00020000
|
|
}
|
|
|
|
[Flags]
|
|
public enum BinarySignaturePolicy : ulong
|
|
{
|
|
BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_ON = 0x100000000000,
|
|
}
|
|
|
|
[Flags]
|
|
public enum CreationFlags : uint
|
|
{
|
|
ZERO_FLAG = 0x00000000,
|
|
CREATE_BREAKAWAY_FROM_JOB = 0x01000000,
|
|
CREATE_DEFAULT_ERROR_MODE = 0x04000000,
|
|
CREATE_NEW_CONSOLE = 0x00000010,
|
|
CREATE_NEW_PROCESS_GROUP = 0x00000200,
|
|
CREATE_NO_WINDOW = 0x08000000,
|
|
CREATE_PROTECTED_PROCESS = 0x00040000,
|
|
CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000,
|
|
CREATE_SEPARATE_WOW_VDM = 0x00001000,
|
|
CREATE_SHARED_WOW_VDM = 0x00001000,
|
|
CREATE_SUSPENDED = 0x00000004,
|
|
CREATE_UNICODE_ENVIRONMENT = 0x00000400,
|
|
DEBUG_ONLY_THIS_PROCESS = 0x00000002,
|
|
DEBUG_PROCESS = 0x00000001,
|
|
DETACHED_PROCESS = 0x00000008,
|
|
EXTENDED_STARTUPINFO_PRESENT = 0x00080000,
|
|
INHERIT_PARENT_AFFINITY = 0x00010000
|
|
}
|
|
|
|
|
|
//https://www.pinvoke.net/default.aspx/kernel32.openthread
|
|
[Flags]
|
|
public enum ThreadAccess : int
|
|
{
|
|
TERMINATE = (0x0001),
|
|
SUSPEND_RESUME = (0x0002),
|
|
GET_CONTEXT = (0x0008),
|
|
SET_CONTEXT = (0x0010),
|
|
SET_INFORMATION = (0x0020),
|
|
QUERY_INFORMATION = (0x0040),
|
|
SET_THREAD_TOKEN = (0x0080),
|
|
IMPERSONATE = (0x0100),
|
|
DIRECT_IMPERSONATION = (0x0200),
|
|
THREAD_HIJACK = SUSPEND_RESUME | GET_CONTEXT | SET_CONTEXT,
|
|
THREAD_ALL = TERMINATE | SUSPEND_RESUME | GET_CONTEXT | SET_CONTEXT | SET_INFORMATION | QUERY_INFORMATION | SET_THREAD_TOKEN | IMPERSONATE | DIRECT_IMPERSONATION
|
|
}
|
|
|
|
//http://www.pinvoke.net/default.aspx/kernel32/OpenProcess.html
|
|
public enum ProcessAccessRights
|
|
{
|
|
All = 0x001F0FFF,
|
|
Terminate = 0x00000001,
|
|
CreateThread = 0x00000002,
|
|
VirtualMemoryOperation = 0x00000008,
|
|
VirtualMemoryRead = 0x00000010,
|
|
VirtualMemoryWrite = 0x00000020,
|
|
DuplicateHandle = 0x00000040,
|
|
CreateProcess = 0x000000080,
|
|
SetQuota = 0x00000100,
|
|
SetInformation = 0x00000200,
|
|
QueryInformation = 0x00000400,
|
|
QueryLimitedInformation = 0x00001000,
|
|
Synchronize = 0x00100000
|
|
}
|
|
|
|
//https://docs.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-virtualallocex
|
|
public enum MemAllocation
|
|
{
|
|
MEM_COMMIT = 0x00001000,
|
|
MEM_RESERVE = 0x00002000,
|
|
MEM_RESET = 0x00080000,
|
|
MEM_RESET_UNDO = 0x1000000,
|
|
SecCommit = 0x08000000
|
|
}
|
|
|
|
//https://docs.microsoft.com/en-us/windows/win32/memory/memory-protection-constants
|
|
public enum MemProtect
|
|
{
|
|
PAGE_EXECUTE = 0x10,
|
|
PAGE_EXECUTE_READ = 0x20,
|
|
PAGE_EXECUTE_READWRITE = 0x40,
|
|
PAGE_EXECUTE_WRITECOPY = 0x80,
|
|
PAGE_NOACCESS = 0x01,
|
|
PAGE_READONLY = 0x02,
|
|
PAGE_READWRITE = 0x04,
|
|
PAGE_WRITECOPY = 0x08,
|
|
PAGE_TARGETS_INVALID = 0x40000000,
|
|
PAGE_TARGETS_NO_UPDATE = 0x40000000,
|
|
}
|
|
|
|
// Parent PID Spoofing flags - https://www.pinvoke.net/default.aspx/kernel32.sethandleinformation
|
|
public enum HANDLE_FLAGS : uint
|
|
{
|
|
None = 0,
|
|
INHERIT = 1,
|
|
PROTECT_FROM_CLOSE = 2
|
|
}
|
|
|
|
// https://docs.microsoft.com/en-us/windows/win32/procthread/thread-security-and-access-rights
|
|
public enum MemOpenThreadAccess
|
|
{
|
|
|
|
PROCESS_CREATE_THREAD = 0x0002,
|
|
PROCESS_QUERY_INFORMATION = 0x0400,
|
|
PROCESS_VM_OPERATION = 0x0008,
|
|
PROCESS_VM_WRITE = 0x0020,
|
|
PROCESS_VM_READ = 0x0010,
|
|
SUSPEND_RESUME = 0x0002,
|
|
}
|
|
|
|
public enum MemFreeType
|
|
{
|
|
MEM_DECOMMIT = 0x4000,
|
|
MEM_RELEASE = 0x8000
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|