首页
社区
课程
招聘
Windows内核-APC(六)
发表于: 2022-8-16 21:03 8768

Windows内核-APC(六)

2022-8-16 21:03
8768

dt _KTHREAD与APC相关的项

KTHREAD下面几个成员分析

ApcStateIndex          

ApcStatePointer        

ApcState

SaveApcState

KAPC_STATE结构

KAPC结构

KernelRoutine:是一个函数指针,该函数将在内核模式的 APC_LEVEL 上被执行

RundownRoutine:是一个函数指针,当一个线程终止时,如果它的 APC 链表中还有 APC 对象。

                                  如果RundownRoutine 成员非空,则调用它所指的函数。

NormalRoutine:指向一个在 PASSIVE_LEVEL 上执行的函数。在这三个函数指针成员中,只有KernelRoutine域是必须的

                              RundownRoutine 和 NormalRoutine都是可选的。如果 NormalRoutine 为空的话,则其后的 NormalContext 和

                                APCMode域也将被忽略。

SystemArgument1和SystemArgument2:是两个提供给 KernelRoutine 或 NormalRoutine 函数的参数。

内核模式特殊 APC

是指NormalRoutine成员为NULL的apc

内核模式普通APC

NormalRoutine成员不为NULL

ApcMode成员为KernelMode

用户模式APC

NormalRoutine 成员不为 NULL

ApcMode成员为UserMode                    

查看wrk的KeInitializeApc结构

KeInitializeApc

KAPC_ENVIRONMENT ,插入的APC的四种环境

无论挂不挂靠,都插入到原始环境

无论挂不挂靠,都插入到挂靠环境

在初始化apc函数中,看线程的 ApcStateIndex这个值,如果ApcStateIndex =0 插入到原始环境,如果ApcStateIndex =1 插入到挂靠环境

选择插入,初始化函数不插入,插入APC函数的时候再选择插入

ida分析KeInitializeApc



有两种APC类型,内核模式和用户模式。

内核模式的APC并不要求从目标线程获得许可就可以运行在该线程的环境中,而用户模式的APC必须先获得许可才可以。内核模式的APC无需目标线程的干涉或者同意,就可以中断该线程并执行一个过程。

内核模式的APC也有两种类型:普通的和特殊的。

特殊的APC在APC级别上执行,并且运行APC例程修改某些APC参数。普通的APC在被动级别上执行,并且接收被特殊APC例程修改的参数(如果它们未被修改过,则直接接收原始的参数)。

通过将IRQL提升到APC级别或者调用KeEnterGuardRegion,就可以进制普通的和特殊的内核模式APC。KeEnterGuardRegion通过设置调用线程的KTHREAD结构中的SpecialApcDisable域,来进制APC被交付。一个线程要想进制普通类型的APC,唯一的办法是调用KeEnterCriticalRegion,它会设置该线程的KTHREAD结构中的KernelAPCDisable域。

每种类型APC的插入和交付行为

wrk查看KeInsertQueueAPC函数参数

ida分析KeInsertQueueAPC

进到KeInsertQueueAPC@12


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

最后于 2022-8-16 22:22 被zhang_derek编辑 ,原因:
收藏
免费 8
支持
分享
最新回复 (4)
雪    币: 3736
活跃值: (3867)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
感谢分享!
2022-8-16 21:33
0
雪    币: 229
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
感谢分享!
2022-8-17 00:09
0
雪    币: 284
活跃值: (44)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢分享!
2022-8-17 09:08
0
雪    币: 1795
活跃值: (3995)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习,感谢分享
2023-5-20 23:09
0
游客
登录 | 注册 方可回帖
返回
//