-
-
[求助]NtQueryObject获得句柄名称的问题
-
发表于:
2012-12-9 10:26
7576
-
[求助]NtQueryObject获得句柄名称的问题
ntStatus = ZwQuerySystemInformation(SystemHandleInformation,cBuffer,0xE0000,&ulSize);
if(NT_SUCCESS(ntStatus))
{
DWORD n = ulSize/sizeof(SYSTEM_HANDLE_INFORMATION);
nNumberHandle = *(PULONG)cBuffer;
pSysHandleInfo = (PSYSTEM_HANDLE_INFORMATION)(cBuffer +4);
ulCount = 0;
for(ULONG i=0;i!=nNumberHandle;++i)
{
if(pSysHandleInfo->ProcessId != ProcessId)
continue;
ntStatus = pfnNtQueryObject((HANDLE)pSysHandleInfo->Handle,ObjectNameInformation,cInfoBuffer,0x10000,&ulSize);
if(NT_SUCCESS(ntStatus))
{
pNameInfo = (POBJECT_NAME_INFORMATION)cInfoBuffer;
if(_tcsstr(pNameInfo->Name.Buffer,TEXT("QQGame_Mutex")) !=NULL)
{
return (HWND)pSysHandleInfo->Handle;
}
}
}
}
学习的是这个代码,遍历出了名称,但是发现遍历出的名称全部都和System进程的一样,每个进程的句柄原来都是那么几个,4/8/C/10....
比如System的Handle=30=名称"\REGISTRY\MACHINE",其他进程的Handle=30=取得的名称也是"\REGISTRY\MACHINE"
但是Xuetr中看到的句柄名称是不一样的,是这个代码使用中还有什么需要注意的地方吗?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)