-
-
[原创][分享]内核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
被三一米田编辑
,原因: