能力值:
( LV4,RANK:50 )
|
-
-
2 楼
那你感觉下 那个函数可以获取线程入口地址呗
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
不知道才问,你的意思这个函数可以?那为什么获取出来的地址不一样呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
,我做了个demo程序,创建了两个线程,PCHunter(xuntr)我用这个查看线程入口,这个工具上显示的线程入口地址,都是一样的地址,而且地址也是错的,所以这个软件的线程入口查看,也是用了NtQueryInformationThread这个函数。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
第二个参数传的是什么?ThreadQuerySetWin32StartAddress?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
取到的才是真实起始地址 你可以Hook相关函数flt一下取得线程函数起始地址
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
Thead
第二个参数传的是什么?ThreadQuerySetWin32StartAddress?
是的,我做了个demo,创建多线程,每个线程调用函数不一样。用这个参数 结果每个线程入口地址都不对,都是一样的。请问有其他方法吗
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
空白即是正义
取到的才是真实起始地址 你可以Hook相关函数flt一下取得线程函数起始地址
您好,我想通过线程句柄或线程或ID方式获得
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
xushanfeng
您好,我想通过线程句柄或线程或ID方式获得
那就直接通过ethread结构得到吧 得到的就是和xt显示一样的起始地址
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
ethread结构,不知道怎么获取 我查查资料看看吧,谢谢你了
|
能力值:
( LV5,RANK:60 )
|
-
-
11 楼
DWORD GetThreadStartAddr(DWORD dwThreadId)
{
HMODULE hNtdll = LoadLibrary(_T("ntdll.dll"));
if (!hNtdll)
{
return 0;
}
NTQUERYINFORMATIONTHREAD NtQueryInformationThread = NULL;
NtQueryInformationThread = (NTQUERYINFORMATIONTHREAD)
GetProcAddress(hNtdll, "NtQueryInformationThread");
if (!NtQueryInformationThread)
{
return 0;
}
HANDLE ThreadHandle = NULL;
ThreadHandle = OpenThread(THREAD_QUERY_INFORMATION, FALSE, dwThreadId);
if (!ThreadHandle)
{
return 0;
}
DWORD dwStaAddr = NULL;
DWORD dwReturnLength = 0;
if (NtQueryInformationThread(ThreadHandle, ThreadQuerySetWin32StartAddress,
&dwStaAddr, sizeof(dwStaAddr), &dwReturnLength))
{
return 0;
}
return dwStaAddr;
} 取得线程入口地址和xt的一模一样,送给楼主了
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
我也有同样问题。楼主怎么解决的
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
AperOdry
DWORD GetThreadStartAddr(DWORD dwThreadId)
{
HMODULE hNtdll& ...
您好,这个代码不行,xt获取到的入口地址也是错误的,就是因为用了这方式
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
封心aa
我也有同样问题。楼主怎么解决的
您好,我还没解决。。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
知道的大侠可以联系下我讨论下吗?我q 19619八3633,不会让你们白忙
|
能力值:
( LV5,RANK:60 )
|
-
-
16 楼
xushanfeng
您好,这个代码不行,xt获取到的入口地址也是错误的,就是因为用了这方式
入口地址的确有一样的。。
|
能力值:
( LV3,RANK:30 )
|
-
-
17 楼
xushanfeng
知道的大侠可以联系下我讨论下吗?我q 19619八3633,不会让你们白忙
用procexp就能看到了。
|
能力值:
( LV9,RANK:280 )
|
-
-
18 楼
谁告诉你CreateThread第三个参数的地址就是线程起始地址了 真正的起始地址是ntdll里的RtlUserThreadStart,这玩意才是线程从用户层开始的地方。 那玩意会call你的ThreadProc,所以你认为ThreadProc是起始地址,实际上这之前跑了很多东西你都没看到。
|
|
|