首页
社区
课程
招聘
[原创][分享]内核APC调用过程学习笔记
发表于: 2020-8-22 17:56 5469

[原创][分享]内核APC调用过程学习笔记

2020-8-22 17:56
5469


主要内容

APC函数的执行与插入并不是同一个线程,具体点说:

    在A线程中向B线程插入一个APC,插入的动作是在A线程中完成的,但什么时候执行则由B线程决定!所以叫“异步过程调用”。

内核APC函数执行点1:线程切换

    分析SwapConText线程切换函数、KiSwaoThread函数

执行点2:当产生系统调用、中断或者异常时

        当产生系统调用、中断或者异常时线程在返回用户空间前都会调用_KiServiceExit函数,在_KiServiceExit会判断是否有要执行的用户APC,如果有则调用KiDeliverApc函数(第一个参数为1)进行处理,没有则直接return。

    分析SwapConText函数

    发现最终确实是调用了_KiServiceExit函数

分析_KiServiceExit函数

分析发现,内核执行流程如下:


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

最后于 2020-11-29 12:52 被三一米田编辑 ,原因:
收藏
免费 4
支持
分享
最新回复 (2)
雪    币: 32
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
mark
2020-8-22 20:20
0
雪    币: 211
活跃值: (193)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
mark
2020-9-11 04:48
0
游客
登录 | 注册 方可回帖
返回
//