能力值:
( LV12,RANK:420 )
|
-
-
2 楼
没有办法,除非你在创建的时候监视
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
不会吧,没办法啊
进程ID都知道了我以为应该啥都能干了
|
能力值:
( LV9,RANK:850 )
|
-
-
4 楼
还是有办法的,狙剑就可以做到
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
狙剑是who?
我查到的是:
CreateToolhelp32Snapshot+Thread32First+Thread32Next
枚举所有线程,然后判断线程的时间是否和指定的进程时间几乎一样?
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
何为主线程,如果能准确定义的话,根据定义去推导,应该是能得到的。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
以知已进程的ID 获取进程ID? 我只知道进程名怎么获取进程ID
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
不知道为什么高手都不给你解答
这问题很简单啊
DWORD dwProcessID = xxxxx, dwThreadID = 0;
THREADENTRY32 te32 = {sizeof(te32)};
HANDLE hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0);
if( Thread32First( hThreadSnap, &te32) )
{
do{
if( dwProcessID == te32.th32OwnerProcessID )
{
dwThreadID = te32.th32ThreadID;
break;
}
}while( Thread32Next( hThreadSnap, &te32) );
}
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
简单说就是线程快照里满足条件的第一个就是主线程ID, 主线程不是第一个被创建的吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
谢谢
我是菜鸟,让我慢慢理解哈
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
就是说:既然已知了PID,那么就可以新建该PID的线程快照,然后快照中第一个线程就是主线程。
我再问一声:线程快照里的线程是按照创建的时间先后排列的对吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
谁来帮忙把8楼兄弟的代码编译成exe给我?
谢谢啦,我不会这个,我想看看编译后的exe反汇编后在OD里是什么样子的。
就编个空壳exe就行啦,pID随便输一个,比如100.
|
能力值:
( LV4,RANK:50 )
|
-
-
13 楼
达文西...我以前一同学叫达文的...但不像你那么懒!
#include <iostream.h>
#include <windows.h>
#include <tlhelp32.h>
void main()
{
DWORD dwProcessID, dwThreadID;
while(1)
{
dwThreadID = 0;
cout<< "请输入进程pID:";
cin >>dwProcessID;
THREADENTRY32 te32 = {sizeof(te32)};
HANDLE hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0);
if( Thread32First( hThreadSnap, &te32) )
{
do{
if( dwProcessID == te32.th32OwnerProcessID )
{
dwThreadID = te32.th32ThreadID;
break;
}
}while( Thread32Next( hThreadSnap, &te32) );
}
if (dwThreadID != 0)
cout<<"主线程ID:"<<dwThreadID<<endl;
else
cout<<"没找到"<<endl;
}
}
8楼代码都给了, 编译下不就行了。 我那同学叫达文的是我的偶像, 以前全靠抄他作业的....
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
谢谢楼上的兄弟!真的感谢。
我不是懒啊,我在0基础上起步学编程,编译的时候经常出错,没基础所以那些错误信息我也不是太懂
谢谢你啊,有问题我再请教。
谢谢
原来你同学叫达文,不错,叫他达文西刚好
|
能力值:
( LV12,RANK:420 )
|
-
-
15 楼
快照中第一个线程不一定就是主线程,呵呵
|
能力值:
(RANK:260 )
|
-
-
16 楼
我觉得应该对线程入口点进行判断,与PE文件的入口点一致就是主线程吧???
我只是说说自己的猜想,有错的话希望指正。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
不知道呢,这个目前还没有解决,太菜了没办法。
后面有时间再看看吧,暂时搁置了。
|
能力值:
(RANK:350 )
|
-
-
18 楼
满足这个条件的线程只能说属于目标进程(这里CreateToolhelp32Snapshot的第二个参数应该填目标进程PID而不是0),你也许会说,根据这个快照扫出来的线程还有不属于这个进程的吗?跟踪一下就知道,最近我也研究过获取主线程ID的方法
下面这个方法应该是正确的
用GetThreadTimes函数获取指定线程的时间信息,然后根据上面提供的思路实现。
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
谢谢stalker和forgot。
GetThreadTimes 看起来不错,我先自己试试,不行的话我点将你啊,毕竟你实战过了,应该有收获可以教我的
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
應該可以用handle來找,先用GetParent找出主要hwnd,然後用GetWindowThreadProcessId
得到主pid
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
主线程ID 和进程ID 不是一个概念吗 好迷糊啊
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
关注中。
好像应该有方法吧!
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
呜呜 看上面的东西..和天数一样~
|
能力值:
( LV9,RANK:610 )
|
-
-
24 楼
CsrssWalker~~
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
用汇编写,利用栈回溯到最开始的线程,那个是最早调用的
|
|
|