Skip to content

Instantly share code, notes, and snippets.

@alexander-hanel
Last active August 12, 2024 15:15
Show Gist options
  • Save alexander-hanel/bb9d756dd18e4886450b1c7bc4cfcf0f to your computer and use it in GitHub Desktop.
Save alexander-hanel/bb9d756dd18e4886450b1c7bc4cfcf0f to your computer and use it in GitHub Desktop.
IDAPython PROCESSINFOCLASS & THREADINFOCLASS Enum Values for ZwQueryInformationProcess & ZwQueryInformationThread
# IDAPYTHON 7.4
id = idc.add_enum(-1, "PROCESSINFOCLASS", idaapi.hex_flag())
# 0x0 ProcessBasicInformation, // 0, q: PROCESS_BASIC_INFORMATION, PROCESS_EXTENDED_BASIC_INFORMATION
idc.add_enum_member(id, "ProcessBasicInformation", 0, -1)
# 0x1 ProcessQuotaLimits, // 1, qs: QUOTA_LIMITS, QUOTA_LIMITS_EX
idc.add_enum_member(id, "ProcessQuotaLimits", 1, -1)
# 0x2 ProcessIoCounters, // 2, q: IO_COUNTERS
idc.add_enum_member(id, "ProcessIoCounters", 2, -1)
# 0x3 ProcessVmCounters, //3, q: VM_COUNTERS, VM_COUNTERS_EX, VM_COUNTERS_EX2
idc.add_enum_member(id, "ProcessVmCounters", 3, -1)
# 0x4 ProcessTimes, // 4 q: KERNEL_USER_TIMES
idc.add_enum_member(id, "ProcessTimes", 4, -1)
# 0x5 ProcessBasePriority, // s: KPRIORITY
idc.add_enum_member(id, "ProcessBasePriority", 5, -1)
# 0x6 ProcessRaisePriority, // s: ULONG
idc.add_enum_member(id, "ProcessRaisePriority", 6, -1)
# 0x7 ProcessDebugPort, // q: HANDLE
idc.add_enum_member(id, "ProcessDebugPort", 7, -1)
# 0x8 ProcessExceptionPort, // s: HANDLE
idc.add_enum_member(id, "ProcessExceptionPort", 8, -1)
# 0x9 ProcessAccessToken, // s: PROCESS_ACCESS_TOKEN
idc.add_enum_member(id, "ProcessAccessToken", 9, -1)
# 0xa ProcessLdtInformation, // 10, qs: PROCESS_LDT_INFORMATION
idc.add_enum_member(id, "ProcessLdtInformation", 10, -1)
# 0xb ProcessLdtSize, // s: PROCESS_LDT_SIZE
idc.add_enum_member(id, "ProcessLdtSize", 11, -1)
# 0xc ProcessDefaultHardErrorMode, // qs: ULONG
idc.add_enum_member(id, "ProcessDefaultHardErrorMode", 12, -1)
# 0xd ProcessIoPortHandlers, // (kernel-mode only)
idc.add_enum_member(id, "ProcessIoPortHandlers", 13, -1)
# 0xe ProcessPooledUsageAndLimits, // q: POOLED_USAGE_AND_LIMITS
idc.add_enum_member(id, "ProcessPooledUsageAndLimits", 14, -1)
# 0xf ProcessWorkingSetWatch, // q: PROCESS_WS_WATCH_INFORMATION[]; s: void
idc.add_enum_member(id, "ProcessWorkingSetWatch", 15, -1)
# 0x10 ProcessUserModeIOPL,
idc.add_enum_member(id, "ProcessUserModeIOPL", 16, -1)
# 0x11 ProcessEnableAlignmentFaultFixup, // s: BOOLEAN
idc.add_enum_member(id, "ProcessEnableAlignmentFaultFixup", 17, -1)
# 0x12 ProcessPriorityClass, // qs: PROCESS_PRIORITY_CLASS
idc.add_enum_member(id, "ProcessPriorityClass", 18, -1)
# 0x13 ProcessWx86Information,
idc.add_enum_member(id, "ProcessWx86Information", 19, -1)
# 0x14 ProcessHandleCount, // 20, q: ULONG, PROCESS_HANDLE_INFORMATION
idc.add_enum_member(id, "ProcessHandleCount", 20, -1)
# 0x15 ProcessAffinityMask, // s: KAFFINITY
idc.add_enum_member(id, "ProcessAffinityMask", 21, -1)
# 0x16 ProcessPriorityBoost, // qs: ULONG
idc.add_enum_member(id, "ProcessPriorityBoost", 22, -1)
# 0x17 ProcessDeviceMap, // qs: PROCESS_DEVICEMAP_INFORMATION, PROCESS_DEVICEMAP_INFORMATION_EX
idc.add_enum_member(id, "ProcessDeviceMap", 23, -1)
# 0x18 ProcessSessionInformation, // q: PROCESS_SESSION_INFORMATION
idc.add_enum_member(id, "ProcessSessionInformation", 24, -1)
# 0x19 ProcessForegroundInformation, // s: PROCESS_FOREGROUND_BACKGROUND
idc.add_enum_member(id, "ProcessForegroundInformation", 25, -1)
# 0x1a ProcessWow64Information, // q: ULONG_PTR
idc.add_enum_member(id, "ProcessWow64Information", 26, -1)
# 0x1b ProcessImageFileName, // q: UNICODE_STRING
idc.add_enum_member(id, "ProcessImageFileName", 27, -1)
# 0x1c ProcessLUIDDeviceMapsEnabled, // q: ULONG
idc.add_enum_member(id, "ProcessLUIDDeviceMapsEnabled", 28, -1)
# 0x1d ProcessBreakOnTermination, // qs: ULONG
idc.add_enum_member(id, "ProcessBreakOnTermination", 29, -1)
# 0x1e ProcessDebugObjectHandle, // 30, q: HANDLE
idc.add_enum_member(id, "ProcessDebugObjectHandle", 30, -1)
# 0x1f ProcessDebugFlags, // qs: ULONG
idc.add_enum_member(id, "ProcessDebugFlags", 31, -1)
# 0x20 ProcessHandleTracing, // q: PROCESS_HANDLE_TRACING_QUERY; s: size 0 disables, otherwise enables
idc.add_enum_member(id, "ProcessHandleTracing", 32, -1)
# 0x21 ProcessIoPriority, // qs: ULONG
idc.add_enum_member(id, "ProcessIoPriority", 33, -1)
# 0x22 ProcessExecuteFlags, // qs: ULONG
idc.add_enum_member(id, "ProcessExecuteFlags", 34, -1)
# 0x23 ProcessResourceManagement,
idc.add_enum_member(id, "ProcessResourceManagement", 35, -1)
# 0x24 ProcessCookie, // q: ULONG
idc.add_enum_member(id, "ProcessCookie", 36, -1)
# 0x25 ProcessImageInformation, // q: SECTION_IMAGE_INFORMATION
idc.add_enum_member(id, "ProcessImageInformation", 37, -1)
# 0x26 ProcessCycleTime, // q: PROCESS_CYCLE_TIME_INFORMATION // since VISTA
idc.add_enum_member(id, "ProcessCycleTime", 38, -1)
# 0x27 ProcessPagePriority, // q: ULONG
idc.add_enum_member(id, "ProcessPagePriority", 39, -1)
# 0x28 ProcessInstrumentationCallback, // 40
idc.add_enum_member(id, "ProcessInstrumentationCallback", 40, -1)
# 0x29 ProcessThreadStackAllocation, // s: PROCESS_STACK_ALLOCATION_INFORMATION, PROCESS_STACK_ALLOCATION_INFORMATION_EX
idc.add_enum_member(id, "ProcessThreadStackAllocation", 41, -1)
# 0x2a ProcessWorkingSetWatchEx, // q: PROCESS_WS_WATCH_INFORMATION_EX[]
idc.add_enum_member(id, "ProcessWorkingSetWatchEx", 42, -1)
# 0x2b ProcessImageFileNameWin32, // q: UNICODE_STRING
idc.add_enum_member(id, "ProcessImageFileNameWin32", 43, -1)
# 0x2c ProcessImageFileMapping, // q: HANDLE (input)
idc.add_enum_member(id, "ProcessImageFileMapping", 44, -1)
# 0x2d ProcessAffinityUpdateMode, // qs: PROCESS_AFFINITY_UPDATE_MODE
idc.add_enum_member(id, "ProcessAffinityUpdateMode", 45, -1)
# 0x2e ProcessMemoryAllocationMode, // qs: PROCESS_MEMORY_ALLOCATION_MODE
idc.add_enum_member(id, "ProcessMemoryAllocationMode", 46, -1)
# 0x2f ProcessGroupInformation, // q: USHORT[]
idc.add_enum_member(id, "ProcessGroupInformation", 47, -1)
# 0x30 ProcessTokenVirtualizationEnabled, // s: ULONG
idc.add_enum_member(id, "ProcessTokenVirtualizationEnabled", 48, -1)
# 0x31 ProcessConsoleHostProcess, // q: ULONG_PTR
idc.add_enum_member(id, "ProcessConsoleHostProcess", 49, -1)
# 0x32 ProcessWindowInformation, // 50, q: PROCESS_WINDOW_INFORMATION
idc.add_enum_member(id, "ProcessWindowInformation", 50, -1)
# 0x33 ProcessHandleInformation, // q: PROCESS_HANDLE_SNAPSHOT_INFORMATION // since WIN8
idc.add_enum_member(id, "ProcessHandleInformation", 51, -1)
# 0x34 ProcessMitigationPolicy, // s: PROCESS_MITIGATION_POLICY_INFORMATION
idc.add_enum_member(id, "ProcessMitigationPolicy", 52, -1)
# 0x35 ProcessDynamicFunctionTableInformation,
idc.add_enum_member(id, "ProcessDynamicFunctionTableInformation", 53, -1)
# 0x36 ProcessHandleCheckingMode,
idc.add_enum_member(id, "ProcessHandleCheckingMode", 54, -1)
# 0x37 ProcessKeepAliveCount, // q: PROCESS_KEEPALIVE_COUNT_INFORMATION
idc.add_enum_member(id, "ProcessKeepAliveCount", 55, -1)
# 0x38 ProcessRevokeFileHandles, // s: PROCESS_REVOKE_FILE_HANDLES_INFORMATION
idc.add_enum_member(id, "ProcessRevokeFileHandles", 56, -1)
# 0x39 ProcessWorkingSetControl, // s: PROCESS_WORKING_SET_CONTROL
idc.add_enum_member(id, "ProcessWorkingSetControl", 57, -1)
# 0x3a ProcessHandleTable, // since WINBLUE
idc.add_enum_member(id, "ProcessHandleTable", 58, -1)
# 0x3b ProcessCheckStackExtentsMode,
idc.add_enum_member(id, "ProcessCheckStackExtentsMode", 59, -1)
# 0x3c ProcessCommandLineInformation, // 60, q: UNICODE_STRING
idc.add_enum_member(id, "ProcessCommandLineInformation", 60, -1)
# 0x3d ProcessProtectionInformation, // q: PS_PROTECTION
idc.add_enum_member(id, "ProcessProtectionInformation", 61, -1)
# 0x3e ProcessMemoryExhaustion, // PROCESS_MEMORY_EXHAUSTION_INFO // since THRESHOLD
idc.add_enum_member(id, "ProcessMemoryExhaustion", 62, -1)
# 0x3f ProcessFaultInformation, // PROCESS_FAULT_INFORMATION
idc.add_enum_member(id, "ProcessFaultInformation", 63, -1)
# 0x40 ProcessTelemetryIdInformation, // PROCESS_TELEMETRY_ID_INFORMATION
idc.add_enum_member(id, "ProcessTelemetryIdInformation", 64, -1)
# 0x41 ProcessCommitReleaseInformation, // PROCESS_COMMIT_RELEASE_INFORMATION
idc.add_enum_member(id, "ProcessCommitReleaseInformation", 65, -1)
# 0x42 ProcessDefaultCpuSetsInformation,
idc.add_enum_member(id, "ProcessDefaultCpuSetsInformation", 66, -1)
# 0x43 ProcessAllowedCpuSetsInformation,
idc.add_enum_member(id, "ProcessAllowedCpuSetsInformation", 67, -1)
# 0x44 ProcessReserved1Information,
idc.add_enum_member(id, "ProcessReserved1Information", 68, -1)
# 0x45 ProcessReserved2Information,
idc.add_enum_member(id, "ProcessReserved2Information", 69, -1)
# 0x46 ProcessSubsystemProcess, // 70
idc.add_enum_member(id, "ProcessSubsystemProcess", 70, -1)
# 0x47 ProcessJobMemoryInformation, // PROCESS_JOB_MEMORY_INFO
idc.add_enum_member(id, "ProcessJobMemoryInformation", 71, -1)
# 0x48 MaxProcessInfoClass,
idc.add_enum_member(id, "MaxProcessInfoClass", 72, -1)
thread_id = idc.add_enum(-1, "THREADINFOCLASS", idaapi.hex_flag())
# 0x0 sicInformation, // q: THREAD_BASIC_INFORMATION
idc.add_enum_member(thread_id, "sicInformation", 0, -1)
# 0x1 ThreadTimes, // q: KERNEL_USER_TIMES
idc.add_enum_member(thread_id, "ThreadTimes", 1, -1)
# 0x2 ThreadPriority, // s: KPRIORITY
idc.add_enum_member(thread_id, "ThreadPriority", 2, -1)
# 0x3 ThreadBasePriority, // s: LONG
idc.add_enum_member(thread_id, "ThreadBasePriority", 3, -1)
# 0x4 ThreadAffinityMask, // s: KAFFINITY
idc.add_enum_member(thread_id, "ThreadAffinityMask", 4, -1)
# 0x5 ThreadImpersonationToken, // s: HANDLE
idc.add_enum_member(thread_id, "ThreadImpersonationToken", 5, -1)
# 0x6 ThreadDescriptorTableEntry, // q: DESCRIPTOR_TABLE_ENTRY (or WOW64_DESCRIPTOR_TABLE_ENTRY)
idc.add_enum_member(thread_id, "ThreadDescriptorTableEntry", 6, -1)
# 0x7 ThreadEnableAlignmentFaultFixup, // s: BOOLEAN
idc.add_enum_member(thread_id, "ThreadEnableAlignmentFaultFixup", 7, -1)
# 0x8 ThreadEventPair,
idc.add_enum_member(thread_id, "ThreadEventPair", 8, -1)
# 0x9 ThreadQuerySetWin32StartAddress, // q: PVOID
idc.add_enum_member(thread_id, "ThreadQuerySetWin32StartAddress", 9, -1)
# 0xa ThreadZeroTlsCell, // 10
idc.add_enum_member(thread_id, "ThreadZeroTlsCell", 10, -1)
# 0xb ThreadPerformanceCount, // q: LARGE_INTEGER
idc.add_enum_member(thread_id, "ThreadPerformanceCount", 11, -1)
# 0xc ThreadAmILastThread, // q: ULONG
idc.add_enum_member(thread_id, "ThreadAmILastThread", 12, -1)
# 0xd ThreadIdealProcessor, // s: ULONG
idc.add_enum_member(thread_id, "ThreadIdealProcessor", 13, -1)
# 0xe ThreadPriorityBoost, // qs: ULONG
idc.add_enum_member(thread_id, "ThreadPriorityBoost", 14, -1)
# 0xf ThreadSetTlsArrayAddress,
idc.add_enum_member(thread_id, "ThreadSetTlsArrayAddress", 15, -1)
# 0x10 ThreadIsIoPending, // q: ULONG
idc.add_enum_member(thread_id, "ThreadIsIoPending", 16, -1)
# 0x11 ThreadHideFromDebugger, // s: void
idc.add_enum_member(thread_id, "ThreadHideFromDebugger", 17, -1)
# 0x12 ThreadBreakOnTermination, // qs: ULONG
idc.add_enum_member(thread_id, "ThreadBreakOnTermination", 18, -1)
# 0x13 ThreadSwitchLegacyState,
idc.add_enum_member(thread_id, "ThreadSwitchLegacyState", 19, -1)
# 0x14 ThreadIsTerminated, // 20, q: ULONG
idc.add_enum_member(thread_id, "ThreadIsTerminated", 20, -1)
# 0x15 ThreadLastSystemCall, // q: THREAD_LAST_SYSCALL_INFORMATION
idc.add_enum_member(thread_id, "ThreadLastSystemCall", 21, -1)
# 0x16 ThreadIoPriority, // qs: ULONG
idc.add_enum_member(thread_id, "ThreadIoPriority", 22, -1)
# 0x17 ThreadCycleTime, // q: THREAD_CYCLE_TIME_INFORMATION
idc.add_enum_member(thread_id, "ThreadCycleTime", 23, -1)
# 0x18 ThreadPagePriority, // q: ULONG
idc.add_enum_member(thread_id, "ThreadPagePriority", 24, -1)
# 0x19 ThreadActualBasePriority,
idc.add_enum_member(thread_id, "ThreadActualBasePriority", 25, -1)
# 0x1a ThreadTebInformation, // q: THREAD_TEB_INFORMATION (requires THREAD_GET_CONTEXT + THREAD_SET_CONTEXT)
idc.add_enum_member(thread_id, "ThreadTebInformation", 26, -1)
# 0x1b ThreadCSwitchMon,
idc.add_enum_member(thread_id, "ThreadCSwitchMon", 27, -1)
# 0x1c ThreadCSwitchPmu,
idc.add_enum_member(thread_id, "ThreadCSwitchPmu", 28, -1)
# 0x1d ThreadWow64Context, // q: WOW64_CONTEXT
idc.add_enum_member(thread_id, "ThreadWow64Context", 29, -1)
# 0x1e ThreadGroupInformation, // 30, q: GROUP_AFFINITY
idc.add_enum_member(thread_id, "ThreadGroupInformation", 30, -1)
# 0x1f ThreadUmsInformation,
idc.add_enum_member(thread_id, "ThreadUmsInformation", 31, -1)
# 0x20 ThreadCounterProfiling,
idc.add_enum_member(thread_id, "ThreadCounterProfiling", 32, -1)
# 0x21 ThreadIdealProcessorEx, // q: PROCESSOR_NUMBER
idc.add_enum_member(thread_id, "ThreadIdealProcessorEx", 33, -1)
# 0x22 ThreadCpuAccountingInformation, // since WIN8
idc.add_enum_member(thread_id, "ThreadCpuAccountingInformation", 34, -1)
# 0x23 ThreadSuspendCount, // since WINBLUE
idc.add_enum_member(thread_id, "ThreadSuspendCount", 35, -1)
# 0x24 ThreadHeterogeneousCpuPolicy, // KHETERO_CPU_POLICY // since THRESHOLD
idc.add_enum_member(thread_id, "ThreadHeterogeneousCpuPolicy", 36, -1)
# 0x25 ThreadContainerId,
idc.add_enum_member(thread_id, "ThreadContainerId", 37, -1)
# 0x26 ThreadNameInformation,
idc.add_enum_member(thread_id, "ThreadNameInformation", 38, -1)
# 0x27 ThreadProperty,
idc.add_enum_member(thread_id, "ThreadProperty", 39, -1)
# 0x28 ThreadSelectedCpuSets,
idc.add_enum_member(thread_id, "ThreadSelectedCpuSets", 40, -1)
# 0x29 ThreadSystemThreadInformation,
idc.add_enum_member(thread_id, "ThreadSystemThreadInformation", 41, -1)
# 0x2a MaxThreadInfoClass
idc.add_enum_member(thread_id, "MaxThreadInfoClass ", 42, -1)
@alexander-hanel
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment