首页
社区
课程
招聘
[求助]ZwQuerySystemInformation使用5号功能查询出来的线程起始地址不是真的?
发表于: 2013-10-21 08:15 6740

[求助]ZwQuerySystemInformation使用5号功能查询出来的线程起始地址不是真的?

2013-10-21 08:15
6740
查询出来是这样一个结构体
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;  
遍历了一下,PID是对的,但是StartAddress是0x7xxxxxx,XT是0x4xxxxx,差距有点大,
这个难道不是线程的入口地址?

另外我搜索论坛使用了方法ZwQueryInformationThread是可以获取到跟XT一样的入口地址,
但是对某些进程,例如csrss.exe的进程,只能找到PID,返回地址是0,而且错误码是0.

PS:都是应用层操作

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
正常啊,你用的应该是win7系统,我win7 x64上查出来的线程入口都是 ntdll!RtlUserThreadStart,而pc_hunter显示的是真正的线程入口。
xp用ZwQueryInformationThread就是真正的入口。。。
2013-10-21 09:29
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
你查出来的是ThreadStart函数的地址.WIN7的一个坑(楼上说的比较清楚)
2013-10-21 09:42
0
雪    币: 206
活跃值: (117)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
原来是这样.谢谢分享!
2013-10-21 11:46
0
雪    币: 48
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
学习了,但是很不幸我是XP SP3 虚拟机,估计也是RtlUserThreadStart的地址吧。

那下面的问题是XP用ZwQueryInformationThread为什么有的进程查询出来的地址是0,有的进程可以正确查到。。

不知道XT是如何实现,感觉是R0搞定的?
2013-10-21 13:21
0
游客
登录 | 注册 方可回帖
返回
//