首页
社区
课程
招聘
[求助]在内核驱动中,如何保护内核线程不被挂起
发表于: 2016-9-23 17:48 10380

[求助]在内核驱动中,如何保护内核线程不被挂起

2016-9-23 17:48
10380
在内核中有两个system thread相互守护(防止被人干掉),请问大牛们如何在其中一个线程被挂起时,能第一时间知道或者收到通知?求指教。

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 2291
活跃值: (938)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
线程挂起机制是通过KTHREAD里面的SuspendApc来实现的,楼主可以试试篡改这个APC里面的函数。没做过,纯属YY。
2016-9-23 18:14
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
其实   能有心去挂起或者结束你系统线程的    肯定就能同时挂起或结束你的两个甚至N个系统线程。
      把RING3不成熟的想法带到RING0很容易蓝的 。
2016-9-26 11:21
0
雪    币: 739
活跃值: (2304)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
挂钩kisuspendthread。。。。。我随便说的
2016-9-26 15:41
0
雪    币: 67
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最正规的做法:
用 IO Timer 或 DPC Timer 监控内核线程挂起计数!
2016-9-27 19:15
0
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
6
然而timer也可以被枚举和结束

应该再加一条:把代码放到non-image内存区域,并加上动态vm,以防被内存特征
2016-9-30 20:04
0
雪    币: 19
活跃值: (1086)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
// Get the process thread list
	status = ZwQuerySystemInformation(SystemProcessInformation, pInfo, 1024 * 1024, NULL);


if ( pInfo->Threads[i].WaitReason != Suspended )
2016-10-1 00:38
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
8
用WorkItem+DpcTimer+AcpiEvent+HalTimer,结合non-image内存,动态vm,各种加密...


halTimer是个非常猥琐的方法
因为跟KPCRB结构有关,而且不用自己调用API,只要填写结构就行
2016-10-1 00:48
1
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
cool
2016-10-1 13:58
0
雪    币: 515
活跃值: (3242)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wem
10
学习了
2020-8-24 20:45
0
游客
登录 | 注册 方可回帖
返回
//