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

📄 hooksyscall.h

📁 Shadow SDT的应用
💻 H
字号:
/******************************************************************************
**
**  FileName    :   HookSysCall.h
**  Version     :   0.10
**  Author      :   embedlinux(E-mai:hqulyc@126.com QQ:5054-3533)
**  Date        :   2008-08-04
**  Comment     :   
**
******************************************************************************/
#ifndef __HOOKSYSCALL_H__
#define __HOOKSYSCALL_H__

#include "ntddk.h"
#include "windef.h"    //Windows Data Types
#include "ntimage.h"   //PE文件相关结构体
#include "IrpFile.h"

#pragma pack(push, 1)
typedef struct _ServiceDescriptorTableEntry {
   unsigned int  *ServiceTableBase;        //array of entry points
   unsigned int  *ServiceCounterTableBase; //array of usage counters
   unsigned int  NumberOfServices;         //number of table entries
   unsigned char *ParamTableBase;          //array of byte counts
} ServiceDescriptorTableEntry, *PServiceDescriptorTableEntry;
#pragma pack(pop)
__declspec(dllimport) ServiceDescriptorTableEntry KeServiceDescriptorTable;


/*
//KeServiceDescriptorTableShadow包含4个子结构
#pragma pack(push, 1)
typedef struct _SYSTEM_SERVICE_TABLE_SHADOW {
	 SYSTEM_SERVICE_TABLE  ntoskrnl; //Native API和KeServiceDescriptorTable指向的一样
	 SYSTEM_SERVICE_TABLE  win32k;   //win32k.sys(GDI/USER support)
	 SYSTEM_SERVICE_TABLE  Table3;   //not used
	 SYSTEM_SERVICE_TABLE  Table4;   //not used
} SYSTEM_SERVICE_TABLE_SHADOW, *PSYSTEM_SERVICE_TABLE_SHADOW;
#pragma pack(pop) 
SYSTEM_SERVICE_TABLE_SHADOW  KeServiceDescriptorTableShadow; //未导出结构
*/

typedef enum _SYSTEM_INFORMATION_CLASS {
	 SystemBasicInformation = 0,					// 0	Y	N
	 SystemProcessorInformation,				// 1	Y	N
   SystemPerformanceInformation,			// 2	Y	N
	 SystemTimeOfDayInformation,				// 3	Y	N
	 SystemNotImplemented1,					// 4	Y	N	// SystemPathInformation
	 SystemProcessesAndThreadsInformation = 5,	// 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,					// 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;

/************************从内核中恢复SSDT涉及的结构*********************/
#define SystemModuleInformation  11

//系统模块信息
typedef struct _SYSTEM_MODULE_INFORMATION {
   ULONG Reserved[2];
   PVOID Base; //The base address of the module.
   ULONG Size; //The size of the module.
   ULONG Flags;
   USHORT Index;
   USHORT Unknown;
   USHORT LoadCount;
   USHORT ModuleNameOffset;
   CHAR ImageName[256];//The filepath of the module.
} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;

typedef struct _MODULES {
   ULONG    NumberOfModules; //模块个数
   SYSTEM_MODULE_INFORMATION  smi;
} MODULES, *PMODULES;

typedef struct _NEED_INFO {
   ULONG    ImageBase;
   UCHAR    UseLess1[204];
   ULONG    VOffset;
   ULONG    UseLess2;
   ULONG    ROffset;
} NEED_INFO, *PNEED_INFO;

typedef struct _MODULE_LIST {
   ULONG    NumberOfModules;
   SYSTEM_MODULE_INFORMATION  SysModuleInfo[];
} MODULE_LIST, *PMODULE_LIST;

/**********************************************************************/
NTSTATUS NTAPI ZwQuerySystemInformation(
   IN ULONG SystemInformationClass,  //被查询的系统信息类型
   IN OUT PVOID SystemInformation,   //指向一个接受系统信息的缓冲区的指针
   IN ULONG SystemInformationLength, //缓冲区长度
   OUT PULONG ReturnLength           //指向一个接受实际返回字节数的变量,可以为0
);

typedef enum _OBJECT_INFORMATION_CLASS {
   ObjectBasicInformation = 0,
   ObjectNameInformation = 1,
   ObjectTypeInformation = 2,
} OBJECT_INFORMATION_CLASS;

NTSTATUS ZwQueryObject(
   IN HANDLE   OPTIONAL,
   IN OBJECT_INFORMATION_CLASS,
   OUT PVOID   OPTIONAL,
   IN ULONG,
   OUT PULONG   OPTIONAL
);

NTSTATUS ZwDuplicateObject(
   HANDLE SourceProcessHandle,
   HANDLE SourceHandle,
   HANDLE TargetProcessHandle,
   PHANDLE TargetHandle,
   ACCESS_MASK DesiredAccess,
   ULONG Attributes,
   ULONG Options
);

NTSYSAPI NTSTATUS NTAPI ZwOpenProcess (
   OUT PHANDLE ProcessHandle,
   IN ACCESS_MASK DesiredAccess, 
   IN POBJECT_ATTRIBUTES ObjectAttributes,
   IN PCLIENT_ID ClientId 
);

NTSYSAPI NTSTATUS NTAPI ZwTerminateProcess(
   IN HANDLE ProcessHandle,
   IN NTSTATUS ExitStatus
);

NTSYSAPI NTSTATUS NTAPI ZwSaveKey(
   IN HANDLE KeyHandle,
   IN HANDLE FileHandle 
);

NTSYSAPI NTSTATUS NTAPI ZwLoadDriver(
   IN PUNICODE_STRING DriverServiceName
);

#endif //_HOOKSYSCALL_H_

⌨️ 快捷键说明

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