ProcessId The process identifier of the owner of the handle. ObjectTypeNumber A number which identifies the type of object to which the handle refers.The number can be translated to a name by using the information returned by ZwQueryObject. Flags A bit array of flags that specify properties of the handle. Handle The numeric value of the handle. Object The address of the kernel object to which the handle refers.
该帖已达到分数最大值,不允许加分操作。 看 我是新手哦,你那么多分就别剥削我的分了,虽然答应多给你3分,可你那么多分了应该也不会要对吧。果然不是简单的地方,第一次遇到我找不到头文件的情况查了一下 The NTSTATUS type is defined in Ntdef.h, and system-supplied status codes are defined in Ntstatus.h需要2个头文件我是VS2008 SP1 并且是全部安装 竟然找不到Ntdef.h 想下载一个还那么困难 终于找到一个 竟然是#ifndef __INCLUDE_DDK_NTDEF_H #define __INCLUDE_DDK_NTDEF_Hstruct _KTHREAD; struct _ETHREAD; struct _EPROCESS;#define NTKERNELAPI #define NTSYSAPI #define NTAPI #endif 根本没有我要的 兔哥在哪个头文件里定义的这些东西啊?
自己定义的话就 #define STATUS_SUCCESS 0 typedef LONG KPRIORITY; typedef struct _UNICODE_STRING { USHORT Length;//在缓冲区存放的数据的长度 USHORT MaximumLength;//缓冲区的最大长度 PWSTR Buffer;//缓冲区的地址 } UNICODE_STRING, *PUNICODE_STRING;//系统信息的分类 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 SystemProcessesAndThreadsInformation, // 5 Y N SystemCallCounts, // 6 Y N SystemConfigurationInformation, // 7 Y N SystemProcessorTimes, // 8 Y N SystemGlobalFlag, // 9 Y Y SystemNotImplemented2, // 10 Y N SystemModuleInformation, // 11 Y N SystemLockInformation, // 12 Y N SystemNotImplemented3, // 13 Y N SystemNotImplemented4, // 14 Y N SystemNotImplemented5, // 15 Y N 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 SystemLoadImage, // 26 N Y SystemUnloadImage, // 27 N Y SystemTimeAdjustment, // 28 Y Y SystemNotImplemented7, // 29 Y N SystemNotImplemented8, // 30 Y N SystemNotImplemented9, // 31 Y N 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 SystemPrioritySeparation, // 39 N Y SystemNotImplemented10, // 40 Y N SystemNotImplemented11, // 41 Y N SystemInvalidInfoClass2, // 42 SystemInvalidInfoClass3, // 43 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, *PSYSTEM_INFORMATION_CLASS;typedef struct _VM_COUNTERS { ULONG PeakVirtualSize; //虚拟存储峰值大小; ULONG VirtualSize; //虚拟存储大小; ULONG PageFaultCount; //页故障数目; ULONG PeakWorkingSetSize; //工作集峰值大小; ULONG WorkingSetSize; //工作集大小; ULONG QuotaPeakPagedPoolUsage; //分页池使用配额峰值; ULONG QuotaPagedPoolUsage; //分页池使用配额; ULONG QuotaPeakNonPagedPoolUsage; //非分页池使用配额峰值; ULONG QuotaNonPagedPoolUsage; //非分页池使用配额; ULONG PagefileUsage;//页文件使用情况; ULONG PeakPagefileUsage;//页文件使用峰值; }VM_COUNTERS,*PVM_COUNTERS;typedef struct _IO_COUNTERS { LARGE_INTEGER ReadOperationCount; //I/O读操作数目; LARGE_INTEGER WriteOperationCount; //I/O写操作数目; LARGE_INTEGER OtherOperationCount; //I/O其他操作数目; LARGE_INTEGER ReadTransferCount;//I/O读数据数目; LARGE_INTEGER WriteTransferCount; //I/O写数据数目; LARGE_INTEGER OtherTransferCount; //I/O其他操作数据数目; }IO_COUNTERS,*PIO_COUNTERS; typedef struct _CLIENT_ID { HANDLE UniqueProcess; HANDLE UniqueThread; }CLIENT_ID;typedef enum _THREAD_STATE { StateInitialized, StateReady, StateRunning, StateStandby, StateTerminated, StateWait, StateTransition, StateUnknown }THREAD_STATE;typedef enum _KWAIT_REASON { Executive, FreePage, PageIn, PoolAllocation, DelayExecution, Suspended, UserRequest, WrExecutive, WrFreePage, WrPageIn, WrPoolAllocation, WrDelayExecution, WrSuspended, WrUserRequest, WrEventPair, WrQueue, WrLpcReceive, WrLpcReply, WrVirtualMemory, WrPageOut, WrRendezvous, Spare2, Spare3, Spare4, Spare5, Spare6, WrKernel } KWAIT_REASON;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;//用户模式(Ring 3)的CPU时间; LARGE_INTEGER KernelTime; //内核模式(Ring 0)的CPU时间; UNICODE_STRING ProcessName; //进程名称; KPRIORITY BasePriority;//进程优先权; ULONG ProcessId; //进程标识符; ULONG InheritedFromProcessId; //父进程的标识符; ULONG HandleCount; //句柄数目; ULONG Reserved2[2]; VM_COUNTERS VmCounters; //虚拟存储器的结构,见下; IO_COUNTERS IoCounters; //IO计数结构,见下; SYSTEM_THREADS Threads[1]; //进程相关线程的结构数组,见下; }SYSTEM_PROCESSES,*PSYSTEM_PROCESSES;typedef LONG NTSTATUS;typedef NTSTATUS ( __stdcall *ZWQUERYSYSTEMINFORMATION ) ( SYSTEM_INFORMATION_CLASS SystemInformationClass, IN OUT PVOID SystemInformation, IN ULONG SystemInformationLength, OUT PULONG ReturnLength OPTIONAL );查MSDN 查什么也没发现这些东西到底是在哪由谁来定义的
HWND hwndChildAfter,
LPCTSTR lpszClass,
LPCTSTR lpszWindow
);
兔哥猛啊,先跟屁股后面混吧,希望在有生之年赶上 困难吗?复杂吗? 是驱动级编程能实现还是应用层就能实现? 太过复杂的话我还是先知难而退吧,其实我就是想弄QQ大厅多开,当然实现方法很多,我想用这样狠的方法,发现QQ建立的互斥对象,直接把它干掉。。不难的话讲解一下吧,我另开贴给你多加3分。
// 枚举已经打开的句柄,取其名称
HMODULE hNtDll = NULL; // nt.dll句柄
ZWQUERYSYSTEMINFORMATION ZwQuerySystemInformation = NULL;
NTQUERYOBJECT NtQueryObject = NULL;
SYSTEM_HANDLE_INFORMATION *hInfo = NULL;
int nNumHandle = 0, i; // 句柄数量
NTSTATUS Status;
ULONG nSize, nCount;
char cBuffer[0x40000], cInfoBuffer[0x1000];
OBJECT_ALL_INFORMATION *pInfo;
OBJECT_NAME_INFORMATION* pName;
DWORD nId = GetProcessId(hProcess);
// 取导出函数
hNtDll = GetModuleHandle( "ntdll.dll" );
ZwQuerySystemInformation = ( ZWQUERYSYSTEMINFORMATION )GetProcAddress( hNtDll, "ZwQuerySystemInformation" );
NtQueryObject = ( NTQUERYOBJECT )GetProcAddress( hNtDll, "NtQueryObject" ); // 查询句柄信息
Status = ZwQuerySystemInformation(SystemHandleInformation,
cBuffer,
0x40000,
&nSize); if(NT_SUCCESS(Status))
{
nNumHandle = *(PULONG)cBuffer;
hInfo = (SYSTEM_HANDLE_INFORMATION*)(cBuffer + 4);
nCount = 0;
for(i = 0; i < nNumHandle; i++)
{
if(hInfo[i].ProcessId != nId) continue;
Status = NtQueryObject(hInfo[i].Handle, ObjectAllInformation, cInfoBuffer, 0x1000, &nSize);
if(NT_SUCCESS(Status))
{
pInfo = (OBJECT_ALL_INFORMATION*)cInfoBuffer;
nCount++;
……………………….
}
}
}
你会发现打印出来的是个OBJECT_ALL_INFORMATION对象的列表,
typedef struct _OBJECT_ALL_INFORMATION {
ULONG NumberOfObjectsTypes;
OBJECT_TYPE_INFORMATION ObjectTypeInformation[1];} OBJECT_ALL_INFORMATION, *POBJECT_ALL_INFORMATION;
当ObjectTypeInformation里面有TypeName:Event就在其中至于修改么,也简单啊~~ NtSetInformationObject啊
就是干互斥对象啊Easy Easy
你R3下就够了,ProcessExplorer就能干互斥对象。方法也是先ZwQuerySystemInformation,然后得Mutex句柄,然后注入进去CloseHandle
莫非 hInfo[i].Handle 不同i之间有可能一样? 不知道我理解有问题没
是这个http://download.csdn.net/source/1003887
ULONG ProcessId;
UCHAR ObjectTypeNumber;
UCHAR Flags; // 0x01 = PROTECT_FROM_CLOSE, 0x02 = INHERIT
USHORT Handle;
PVOID Object;
ACCESS_MASK GrantedAccess;
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
Members
ProcessId
The process identifier of the owner of the handle.
ObjectTypeNumber
A number which identifies the type of object to which the handle refers.The number
can be translated to a name by using the information returned by ZwQueryObject.
Flags
A bit array of flags that specify properties of the handle.
Handle
The numeric value of the handle.
Object
The address of the kernel object to which the handle refers.
我有鸭梨请你吃。莫非 hInfo[i].Handle 不同i之间有可能一样? 应该是 hInfo[i].Object 不同i之间有可能不一样对吧呵呵 万分感谢。。
The NTSTATUS type is defined in Ntdef.h, and system-supplied status codes are defined in Ntstatus.h需要2个头文件我是VS2008 SP1 并且是全部安装 竟然找不到Ntdef.h 想下载一个还那么困难 终于找到一个 竟然是#ifndef __INCLUDE_DDK_NTDEF_H
#define __INCLUDE_DDK_NTDEF_Hstruct _KTHREAD;
struct _ETHREAD;
struct _EPROCESS;#define NTKERNELAPI
#define NTSYSAPI
#define NTAPI
#endif
根本没有我要的 兔哥在哪个头文件里定义的这些东西啊?
#define STATUS_SUCCESS 0
typedef LONG KPRIORITY;
typedef struct _UNICODE_STRING {
USHORT Length;//在缓冲区存放的数据的长度
USHORT MaximumLength;//缓冲区的最大长度
PWSTR Buffer;//缓冲区的地址
} UNICODE_STRING, *PUNICODE_STRING;//系统信息的分类
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
SystemProcessesAndThreadsInformation, // 5 Y N
SystemCallCounts, // 6 Y N
SystemConfigurationInformation, // 7 Y N
SystemProcessorTimes, // 8 Y N
SystemGlobalFlag, // 9 Y Y
SystemNotImplemented2, // 10 Y N
SystemModuleInformation, // 11 Y N
SystemLockInformation, // 12 Y N
SystemNotImplemented3, // 13 Y N
SystemNotImplemented4, // 14 Y N
SystemNotImplemented5, // 15 Y N
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
SystemLoadImage, // 26 N Y
SystemUnloadImage, // 27 N Y
SystemTimeAdjustment, // 28 Y Y
SystemNotImplemented7, // 29 Y N
SystemNotImplemented8, // 30 Y N
SystemNotImplemented9, // 31 Y N
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
SystemPrioritySeparation, // 39 N Y
SystemNotImplemented10, // 40 Y N
SystemNotImplemented11, // 41 Y N
SystemInvalidInfoClass2, // 42
SystemInvalidInfoClass3, // 43
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, *PSYSTEM_INFORMATION_CLASS;typedef struct _VM_COUNTERS {
ULONG PeakVirtualSize; //虚拟存储峰值大小;
ULONG VirtualSize; //虚拟存储大小;
ULONG PageFaultCount; //页故障数目;
ULONG PeakWorkingSetSize; //工作集峰值大小;
ULONG WorkingSetSize; //工作集大小;
ULONG QuotaPeakPagedPoolUsage; //分页池使用配额峰值;
ULONG QuotaPagedPoolUsage; //分页池使用配额;
ULONG QuotaPeakNonPagedPoolUsage; //非分页池使用配额峰值;
ULONG QuotaNonPagedPoolUsage; //非分页池使用配额;
ULONG PagefileUsage;//页文件使用情况;
ULONG PeakPagefileUsage;//页文件使用峰值;
}VM_COUNTERS,*PVM_COUNTERS;typedef struct _IO_COUNTERS
{
LARGE_INTEGER ReadOperationCount; //I/O读操作数目;
LARGE_INTEGER WriteOperationCount; //I/O写操作数目;
LARGE_INTEGER OtherOperationCount; //I/O其他操作数目;
LARGE_INTEGER ReadTransferCount;//I/O读数据数目;
LARGE_INTEGER WriteTransferCount; //I/O写数据数目;
LARGE_INTEGER OtherTransferCount; //I/O其他操作数据数目;
}IO_COUNTERS,*PIO_COUNTERS;
typedef struct _CLIENT_ID
{
HANDLE UniqueProcess;
HANDLE UniqueThread;
}CLIENT_ID;typedef enum _THREAD_STATE
{
StateInitialized,
StateReady,
StateRunning,
StateStandby,
StateTerminated,
StateWait,
StateTransition,
StateUnknown
}THREAD_STATE;typedef enum _KWAIT_REASON {
Executive,
FreePage,
PageIn,
PoolAllocation,
DelayExecution,
Suspended,
UserRequest,
WrExecutive,
WrFreePage,
WrPageIn,
WrPoolAllocation,
WrDelayExecution,
WrSuspended,
WrUserRequest,
WrEventPair,
WrQueue,
WrLpcReceive,
WrLpcReply,
WrVirtualMemory,
WrPageOut,
WrRendezvous,
Spare2,
Spare3,
Spare4,
Spare5,
Spare6,
WrKernel
} KWAIT_REASON;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;//用户模式(Ring 3)的CPU时间;
LARGE_INTEGER KernelTime; //内核模式(Ring 0)的CPU时间;
UNICODE_STRING ProcessName; //进程名称;
KPRIORITY BasePriority;//进程优先权;
ULONG ProcessId; //进程标识符;
ULONG InheritedFromProcessId; //父进程的标识符;
ULONG HandleCount; //句柄数目;
ULONG Reserved2[2];
VM_COUNTERS VmCounters; //虚拟存储器的结构,见下;
IO_COUNTERS IoCounters; //IO计数结构,见下;
SYSTEM_THREADS Threads[1]; //进程相关线程的结构数组,见下;
}SYSTEM_PROCESSES,*PSYSTEM_PROCESSES;typedef LONG NTSTATUS;typedef NTSTATUS ( __stdcall *ZWQUERYSYSTEMINFORMATION )
( SYSTEM_INFORMATION_CLASS SystemInformationClass,
IN OUT PVOID SystemInformation,
IN ULONG SystemInformationLength,
OUT PULONG ReturnLength OPTIONAL );查MSDN 查什么也没发现这些东西到底是在哪由谁来定义的