-
-
[原创][分享]异常处理机制-异常记录以及内核异常处理流程学习笔记
-
2020-8-25 17:49 1158
-
异常分为两大类,CPU产生的异常、软件模拟的异常。
异常处理的流程:异常记录异常分发异常处理
异常处理又分为0环异常处理和3环异常处理。这里讲的是0环的异常处理。
一、CPU异常记录
此处通过除零异常演示:
一旦出现除零异常,CPU会通过#DE(0)得知,此时应该找IDT表中的第[0]个中断处理函数
二、模拟异常记录
三、异常记录总结
四、内核异常处理流程
分析KiDispatchException函数
接上图
接上图
五、内核异常处理流程总结
KiDispatchException函数
VOID KiDispatchException(ExceptionRecord, ExceptionFrame, TrapFrame, PreviousMode, FirstChance)
1) _KeContextFromKframes 将Trap_frame备份到context 为返回3环做准备
2) 判断先前模式 0是内核调用 1是用户层调
3) 是否是第一次调用
4) 是否有内核调试器
5) 如果没有或者内核调试器不处理
6) 调用RtlDispatchException
7) 如果返回FALSE 也就是0
8) 再次判断是否有内核调试器 有调用 没有直接蓝屏
看雪学院推出的专业资质证书《看雪安卓应用安全能力认证 v1.0》(中级和高级)!
最后于 2020-11-29 12:51
被三一米田编辑
,原因:
赞赏
他的文章