首页
社区
课程
招聘
[求助]线程回调可以防远程线程么?
发表于: 2014-10-20 01:27 6731

[求助]线程回调可以防远程线程么?

2014-10-20 01:27
6731
就是这个回调: PsSetCreateThreadNotifyRoutine

我想在这个回调里面判断是不是远程线程,是的话,就结束这个线程

现在已经能判断是不是远程线程了,但是没法结束这个线程:ZwOpenThread返回0xC000000D, 说是无效参数。。。  但是我用其他的线程ID, 就可以正常打开。唯独打不开这个新创建的“线程”。

PsLookupThreadByThreadId  也不行。。。。。(据说这个在WIN7下可以在线程回调中用,但是我得考虑XP啊)

求解啊,可有其他办法干掉这个线程?

源码:

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
请勿在WindowsXP下配套使用PsSetCreateThreadNotifyRoutine和ZwOpenThread,因为操作系统有bug.


你没看错,是操作系统的bug~
2014-10-20 07:33
0
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
39cK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0D9L8$3N6Q4x3X3g2U0M7$3c8F1i4K6u0W2L8X3g2@1i4K6u0r3M7%4g2H3k6i4u0U0L8%4N6Q4x3V1k6S2M7Y4c8A6j5$3I4W2i4K6u0r3k6r3g2@1j5h3W2D9M7#2)9J5c8U0x3J5x3e0V1I4x3e0f1`.
2014-10-20 07:38
0
雪    币: 326
活跃值: (56)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
占个座。
VOID
(*PCREATE_THREAD_NOTIFY_ROUTINE) (
    IN HANDLE  ProcessId,
    IN HANDLE  ThreadId,
    IN BOOLEAN  Create
    );
怎么判断远程线程的,你在回调里结束线程恐怕做不到。
2014-10-20 09:58
0
雪    币: 239
活跃值: (133)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
线程数如果等于1 是进程刚启动的主线程 不是"远程线程"   没法理解这种非A即B的逻辑。
2014-10-20 10:48
0
雪    币: 478
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
如果进程已经启动了,你再创建一个远程线程,线程数回会是2
2014-10-20 12:42
0
雪    币: 478
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
如果在回调里面检测到"源进程"和"目的进程"不同,而线程数又是1,说明是进程刚启动
2014-10-20 12:46
0
雪    币: 239
活跃值: (133)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
"源进程"和"目的进程" 不同,线程数>1是什么线程
"源进程"和"目的进程" 相同,线程数>1是什么线程
2014-10-20 15:36
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
可以防止,终止当前线程就可以了
ZwTerminateThread(NULL, STATUS_SUCCESS) //终止当前线程传递NULL
2014-10-20 16:36
0
雪    币: 478
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这样是把"注入者"的线程给终止了...
2014-10-20 16:46
0
雪    币: 478
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
"源进程"和"目的进程" 不同,线程数>1,是CreateRemoteThread产生的线程 (一般认为是"注入")
"源进程"和"目的进程" 相同,线程数>1,是线程自身CreateThread(一般认为是正常)

"源进程"和"目的进程" 不同,线程数=1,是进程刚启动时候的"主线程"

至少XP下测试是这样
2014-10-20 16:48
0
雪    币: 239
活跃值: (133)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
那么你的远程线程的定义就是 "源进程"和"目的进程" 不同
2014-10-20 17:10
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
找到线程入口patch,ret 8
2014-10-20 17:12
0
雪    币: 478
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
差不多是这样,同时得排除掉进程刚启动时候的主线程.
2014-10-20 17:22
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
把线程address的开头改成ret即可,这样线程就自己退出了
2014-10-21 09:59
0
游客
登录 | 注册 方可回帖
返回