首页
社区
课程
招聘
[求助]如何获取线程入口
发表于: 2009-5-29 15:19 6013

[求助]如何获取线程入口

2009-5-29 15:19
6013
我根据当前激活窗口获得进程id,建立快照列举该进程的所有线程,想要暂停其中一个线程,不知道怎么识别该暂停哪一个线程,不过用工具(Xuetr)看该线程的入口地址是不变的,所以想通过线程入口来识别线程,达到暂停指定线程的效果

不知道怎么获取线程的入口地址,来此求教!!

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

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
可能上面字太多,简化问题:

已知线程id,如何获取线程入口地址
2009-5-29 16:07
0
雪    币: 517
活跃值: (84)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
3
同进程内,一般用fs:[0]回溯到0xFFFFFFFF时,在+18处就有线程入口地址了。
但是,进程A查找进程B的线程入口地址,还真没试过。procexp上可以看到线程入口,但具体怎么实现就不知道喽。虽然进程A得到进程B的线程句柄,也可以通过GetThreadContext得到相关线程环境,但是不同进程间数据的读取显然不方便,特别是读fs:[0],不知道能不能实现,嘿嘿,也没有做实验。我也就说说罢了。
另,找到一篇也许有点用:http://www.cnblogs.com/singlerace/archive/2008/10/16/1311795.html
搜索啊搜索
2009-5-29 16:07
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
多谢楼上解说,帖子我看了,那个函数我没弄好

既然获取入口地址麻烦,如果不获取入口地址,有什么其他的特征来识别要暂停的线程

线程名?

另外,用Dll注入进程后,来暂停该进程的线程,是不是识别简单些?
2009-5-29 16:27
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
5
要获取入口地址,可以用Native API: NtQueryInformationThread,以ThreadQuerySetWin32StartAddress为参数。(参考sysinternals)

另外,如果是2003以后版本的系统,应该有个GetThreadStartInformation函数可以用,参考:
http://www.hszxcx.cn/WindowsAPI/FunctionView.aspx?id=35582581080375
2009-5-29 17:46
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
已经按加载顺序来识别了,谢谢2位热心的前辈

新问题:暂停线程要线程句柄,百度搜了,说要OpenThread,我是用delphi的,OpenThread竟然不能用,

超级郁闷,有没有懂Delphi的,教教怎么调用这个函数
2009-5-29 18:50
0
雪    币: 348
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
和语言无关吧? 思路是一样的
2009-5-29 18:58
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
8
2009-5-30 10:08
0
游客
登录 | 注册 方可回帖
返回
//