ntfunctions.h

来自「驱动枚举进程,控制线程AFFINITY,通过修改EPROCESS,ETHREAD」· C头文件 代码 · 共 56 行

H
56
字号
/************************************************************************
* 文件名称:NTFunctions.h                                            
* 作    者:李骥
*************************************************************************/

#ifdef __cplusplus
extern "C"
{
#endif


	///////////////声明Native API///////////////////////////////////////    
	NTSYSAPI NTSTATUS NTAPI ZwQuerySystemInformation(    
		IN ULONG SystemInformationClass,    
		IN PVOID SystemInformation,    
		IN ULONG SystemInformationLength,    
		OUT PULONG ReturnLength); 


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

	NTSYSAPI NTSTATUS NTAPI KeSetAffinityThread(  IN HANDLE ThreadHandle, IN ULONG Mask );

	NTSYSAPI NTSTATUS NTAPI NtSuspendThread( IN HANDLE ThreadHandle, OUT PULONG PreviousSuspendCount OPTIONAL ); 

	NTSYSAPI NTSTATUS NTAPI NtResumeThread(  IN HANDLE ThreadHandle, OUT PULONG PreviousSuspendCount OPTIONAL );



	
	/*我们需要的句柄被保存在ThreadHandle。我们需要把DesiredAccess设置为THREAD_SUSPEND_RESUME。 
	  ThreadHandle用来调用NtSuspendThread。 
	    被挂起的进程就可以被改写了。我们按照"挂钩Windows API"里3.2.2节里描述的方法处理。唯一的不同是使用其它进程的函数。 
		  挂钩完后我们就可以调用NtResumeThread恢复所有线程的运行。*/ 
#ifdef __cplusplus
}
#endif 


typedef NTSTATUS (*ZWQUERYSYSTEMINFORMATION)(   
	IN ULONG SystemInformationClass,    
	IN PVOID SystemInformation,    
	IN ULONG SystemInformationLength,    
	OUT PULONG ReturnLength);   

/////////////////////////////////////////////////

NTSTATUS MyZwQuerySystemInformation(    
									IN ULONG SystemInformationClass,    
									IN PVOID SystemInformation,    
									IN ULONG SystemInformationLength,    
									OUT PULONG ReturnLength);   



⌨️ 快捷键说明

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