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

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

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

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

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 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],不知道能不能实现,嘿嘿,也没有做实验。我也就说说罢了。
另,找到一篇也许有点用:8e3K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4F1j5X3I4G2k6%4y4Q4x3X3g2U0L8$3#2Q4x3V1k6K6K9h3&6Y4L8r3g2J5j5h3y4W2i4K6u0r3j5i4u0U0K9r3W2$3k6g2)9J5c8U0t1H3x3o6S2Q4x3V1j5I4x3q4)9J5c8U0p5$3i4K6u0r3x3e0x3I4x3e0M7&6y4g2)9J5k6h3S2@1L8h3H3`.
搜索啊搜索
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函数可以用,参考:
479K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3S2K6P5Y4S2U0P5q4)9J5k6h3y4F1i4K6u0r3g2$3W2F1k6r3!0%4M7@1q4b7d9g2)9J5c8V1k6#2L8X3y4@1K9h3!0F1g2X3W2W2N6#2)9J5k6h3q4K6M7s2S2Q4x3@1k6A6k6q4)9K6c8o6x3#2y4e0R3J5y4e0R3I4x3o6R3H3x3K6M7#2
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
游客
登录 | 注册 方可回帖
返回