⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sysinfo.h

📁 臭氧层主动防御系统驱动源代码!臭氧层主动防御系统驱动源代码!
💻 H
字号:
/*
 * Copyright (c) 2004 Security Architects Corporation. All rights reserved.
 *
 * Module Name:
 *
 *		sysinfo.h
 *
 * Abstract:
 *
 *		This module defines various types used by ZwSetSystemInformation() hooking routines.
 *		ZwSetSystemInformation's SystemLoadAndCallImage and SystemLoadImage parameters can be used
 *		to load code into kernel address space.
 *
 * Author:
 *
 *		Eugene Tsyrklevich 01-Mar-2004
 *
 * Revision History:
 *
 *		None.
 */


#ifndef __SYSINFO_H__
#define __SYSINFO_H__



/*
 * ZwSetSystemInformation sets information that affects the operation of the system. [NAR]
 */
											// # Query Set
typedef enum _SYSTEM_INFORMATION_CLASS {
	SystemBasicInformation,					// 0	Y	N
	SystemProcessorInformation,				// 1	Y	N
	SystemPerformanceInformation,			// 2	Y	N
	SystemTimeOfDayInformation,				// 3	Y	N
	SystemNotImplemented1,					// 4	Y	N	// SystemPathInformation
	SystemProcessesAndThreadsInformation,	// 5	Y	N
	SystemCallCounts,						// 6	Y	N
	SystemConfigurationInformation,			// 7	Y	N
	SystemProcessorTimes,					// 8	Y	N
	SystemGlobalFlag,						// 9	Y	Y
	SystemNotImplemented2,					// 10	Y	N	// SystemCallTimeInformation
	SystemModuleInformation,				// 11	Y	N
	SystemLockInformation,					// 12	Y	N
	SystemNotImplemented3,					// 13	Y	N	// SystemStackTraceInformation
	SystemNotImplemented4,					// 14	Y	N	// SystemPagedPoolInformation
	SystemNotImplemented5,					// 15	Y	N	// SystemNonPagedPoolInformation
	SystemHandleInformation,				// 16	Y	N
	SystemObjectInformation,				// 17	Y	N
	SystemPagefileInformation,				// 18	Y	N
	SystemInstructionEmulationCounts,		// 19	Y	N
	SystemInvalidInfoClass1,				// 20
	SystemCacheInformation,					// 21	Y	Y
	SystemPoolTagInformation,				// 22	Y	N
	SystemProcessorStatistics,				// 23	Y	N
	SystemDpcInformation,					// 24	Y	Y
	SystemNotImplemented6,					// 25	Y	N	// SystemFullMemoryInformation
	SystemLoadImage,						// 26	N	Y	// SystemLoadGdiDriverInformation
	SystemUnloadImage,						// 27	N	Y
	SystemTimeAdjustment,					// 28	Y	Y
	SystemNotImplemented7,					// 29	Y	N	// SystemSummaryMemoryInformation
	SystemNotImplemented8,					// 30	Y	N	// SystemNextEventIdInformation
	SystemNotImplemented9,					// 31	Y	N	// SystemEventIdsInformation
	SystemCrashDumpInformation,				// 32	Y	N
	SystemExceptionInformation,				// 33	Y	N
	SystemCrashDumpStateInformation,		// 34	Y	Y/N
	SystemKernelDebuggerInformation,		// 35	Y	N
	SystemContextSwitchInformation,			// 36	Y	N
	SystemRegistryQuotaInformation,			// 37	Y	Y
	SystemLoadAndCallImage,					// 38	N	Y	// SystemExtendServiceTableInformation
	SystemPrioritySeparation,				// 39	N	Y
	SystemNotImplemented10,					// 40	Y	N	// SystemPlugPlayBusInformation
	SystemNotImplemented11,					// 41	Y	N	// SystemDockInformation
	SystemInvalidInfoClass2,				// 42			// SystemPowerInformation
	SystemInvalidInfoClass3,				// 43			// SystemProcessorSpeedInformation
	SystemTimeZoneInformation,				// 44	Y	N
	SystemLookasideInformation,				// 45	Y	N
	SystemSetTimeSlipEvent,					// 46	N	Y
	SystemCreateSession,					// 47	N	Y
	SystemDeleteSession,					// 48	N	Y
	SystemInvalidInfoClass4,				// 49
	SystemRangeStartInformation,			// 50	Y	N
	SystemVerifierInformation,				// 51	Y	Y
	SystemAddVerifier,						// 52	N	Y
	SystemSessionProcessesInformation		// 53	Y	N
} SYSTEM_INFORMATION_CLASS;


/*
 * Information Class 5
 */

typedef enum {
	StateInitialized,
	StateReady,
	StateRunning,
	StateStandby,
	StateTerminated,
	StateWait,
	StateTransition,
	StateUnknown
} THREAD_STATE;

typedef struct _SYSTEM_THREADS {
	LARGE_INTEGER KernelTime;
	LARGE_INTEGER UserTime;
	LARGE_INTEGER CreateTime;
	ULONG WaitTime;
	PVOID StartAddress;
	CLIENT_ID ClientId;
	KPRIORITY Priority;
	KPRIORITY BasePriority;
	ULONG ContextSwitchCount;
	THREAD_STATE State;
	KWAIT_REASON WaitReason;
} SYSTEM_THREADS, *PSYSTEM_THREADS;

typedef struct _SYSTEM_PROCESSES {
	ULONG NextEntryDelta;
	ULONG ThreadCount;
	ULONG Reserved1[6];
	LARGE_INTEGER CreateTime;
	LARGE_INTEGER UserTime;
	LARGE_INTEGER KernelTime;
	UNICODE_STRING ProcessName;
	KPRIORITY BasePriority;
	ULONG ProcessId;
	ULONG InheritedFromProcessId;
	ULONG HandleCount;
	ULONG Reserved2[2];
	VM_COUNTERS VmCounters;
	IO_COUNTERS IoCounters; // Windows 2000 only
	SYSTEM_THREADS Threads[1];
} SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;


NTSTATUS
NTAPI
HookedNtSetSystemInformation(
	IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
	IN OUT PVOID SystemInformation,
	IN ULONG SystemInformationLength
	);


/*
 * ZwQuerySystemInformation queries information about the system. [NAR]
 */

NTSYSAPI
NTSTATUS
NTAPI
ZwQuerySystemInformation(
	IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
	IN OUT PVOID SystemInformation,
	IN ULONG SystemInformationLength,
	OUT PULONG ReturnLength OPTIONAL
	);


typedef NTSTATUS (*fpZwSetSystemInformation)
(
	IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
	IN OUT PVOID SystemInformation,
	IN ULONG SystemInformationLength
);


/*
 * Information Class 38
 *
 * "This information class can only be set. Rather than setting any information (in a narrow
 * sense of 搒etting

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -