首页
社区
课程
招聘
[求助] NtQuerySystemInformation 获取系统句柄问题
发表于: 2020-5-24 19:30 5794

[求助] NtQuerySystemInformation 获取系统句柄问题

2020-5-24 19:30
5794

NtQuerySystemInformation SystemHandleInformation 获取系统句柄发现有些进程没有信息,进程PID都没有,有遇到过这样的问题没?


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 4154
活跃值: (1535)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
要看进程权限的
2020-5-24 19:32
0
雪    币: 7
活跃值: (333)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
获取下调试特权
2020-5-24 21:59
0
雪    币: 158
活跃值: (349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4


我用了提权的 ,但是还是一样的效果

win10 64 系统

最后于 2020-5-24 23:22 被lg好人编辑 ,原因:
2020-5-24 23:21
0
雪    币: 1790
活跃值: (3786)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
我记得好像是SYSTEM_HANDLE_INFORMATION返回的子结构SYSTEM_HANDLE_TABLE_ENTRY_INFO里的USHORT UniqueProcessId等在新的系统下会导致数值超出。好像会导致遍历时返回的ID有问题。
早ProcessHacker的源码里特别针对该问题在自己的驱动里重新实现了该功能。
2020-5-25 09:25
0
雪    币: 158
活跃值: (349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6

发现 进程ID 大于 65535 就不能获取,咋会这样呢

怎么获取所有进程呢?

最后于 2020-5-25 10:15 被lg好人编辑 ,原因:
2020-5-25 10:13
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
7
lg好人 发现 进程ID 大于 65535 就不能获取,咋会这样呢怎么获取所有进程呢?
上驱动,具体参考ProcessHacker
2020-5-25 10:32
0
雪    币: 158
活跃值: (349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
hzqst 上驱动,具体参考ProcessHacker
r3有办法解决没
2020-5-25 11:07
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
9
lg好人 r3有办法解决没
typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX {    
	PVOID Object;    
	ULONG_PTR UniqueProcessId;    
	ULONG_PTR HandleValue;    
	ULONG GrantedAccess;    
	USHORT CreatorBackTraceIndex;    
	USHORT ObjectTypeIndex;    
	ULONG HandleAttributes;    
	ULONG Reserved;    
} SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO_EX;    
typedef struct _SYSTEM_HANDLE_INFORMATION_EX {    
	ULONG_PTR NumberOfHandles;    
	ULONG_PTR Reserved;    
	SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX Handles[1];    
} SYSTEM_HANDLE_INFORMATION_EX, *PSYSTEM_HANDLE_INFORMATION_EX;


最后于 2020-5-25 12:22 被hzqst编辑 ,原因:
2020-5-25 12:19
1
雪    币: 4154
活跃值: (1535)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
PSYSTEM_HANDLE_INFORMATION_EX shi = nullptr;
DWORD tmp = 0; size = 0; NTSTATUS stat;
while (true) {
   if ((stat = NtQuerySystemInformation(SystemExtendedHandleInformation, shi, size, &tmp)) != STATUS_INFO_LENGTH_MISMATCH)
       break;
   if (shi)delete[] reinterpret_cast<LPVOID>(shi);
   size = tmp + sizeof(SYSTEM_HANDLE_INFORMATION_EX) * 50;
   shi = reinterpret_cast<PSYSTEM_HANDLE_INFORMATION_EX>(new char[size]);
}

//获取失败
if (!NT_SUCCESS(stat)) {
    if (shi)delete[] reinterpret_cast<LPVOID>(shi);
    return;
}
//成功




2020-5-25 12:31
0
雪    币: 158
活跃值: (349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
现在 可以了,谢谢
2020-5-25 13:11
0
游客
登录 | 注册 方可回帖
返回
//