首页
论坛
课程
招聘
[原创][分享]异常处理机制-异常记录以及内核异常处理流程学习笔记
2020-8-25 17:49 1158

[原创][分享]异常处理机制-异常记录以及内核异常处理流程学习笔记

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 被三一米田编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回