首页
社区
课程
招聘
[求助]如何得到进程内线程的信息如StartAddress
发表于: 2007-12-11 16:52 8679

[求助]如何得到进程内线程的信息如StartAddress

2007-12-11 16:52
8679
通过该NtQuerySystemInformation API能得到进程的信息但是该结构
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;
Threads只包含主线程的信息那么如何得到辅助线程的信息呢?

for(int i=0;i<lpBuf->ThreadCount;i++)
{
    ZeroMemory((void*)&lpThdTmp,sizeof(SYSTEM_THREADS));
    lpThread = (PSYSTEM_THREADS)((char*)&lpBuf->Threads + i*sizeof(SYSTEM_THREADS));
    char *pMem = (char*)&lpBuf->Threads[i];
     memcpy((void*)&lpThdTmp,lpThread,sizeof(SYSTEM_THREADS));
}
该方法得到SYSTEM_THREADS貌似并不正确,还是说建立的辅助线程都是主线程的子线程而不是该进程的子线程。
望高手解答?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
2
......
case CREATE_THREAD_DEBUG_EVENT: 		
		g_ZwQueryInformationThread(lpDebugEvent->u.CreateThread.hThread,
							ThreadQuerySetWin32StartAddress,
							&dwWin32StartAddress,
							sizeof(dwWin32StartAddress),
							NULL
							);
		
		lpDebugEvent->u.CreateThread.lpStartAddress = (LPTHREAD_START_ROUTINE)dwWin32StartAddress;
		break;
......


你那个Native API也是可以用的,Threads是数组,并非只有主线程
2007-12-11 18:26
0
雪    币: 20
活跃值: (37)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
但是我的到的数据和OD中显示的数据并不一样
2007-12-12 08:24
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
4
EHTEAD中有startadress。
或者ZwQuerySystemInformation 9号调用。。。
2007-12-12 08:39
0
雪    币: 20
活跃值: (37)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
好!谢谢阿
我在看看
2007-12-12 08:45
0
游客
登录 | 注册 方可回帖
返回
//