00 CPU异常记录

1、异常的分类
<1>CPU产生的异常(如除0)
<2>软件模拟产生的异常(如C++中的异常)

2、CPU异常的产生
CPU指令检测到异常(如除0)
查IDT表,执行中断处理函数
CommonDispatchException(把异常相关的一些信息存储到一个结构体中)
KiDispatchException(分发异常,目的是找到异常处理函数)

3、CommonDispatchException函数分析
该函数构造了一个_EXCEPTION_RECORD结构体

kd> dt _EXCEPTION_RECORD
ntdll!_EXCEPTION_RECORD
   +0x000 ExceptionCode    : Int4B //异常代码
   +0x004 ExceptionFlags   : Uint4B //异常状态
   +0x008 ExceptionRecord  : Ptr32 _EXCEPTION_RECORD //下一个异常
   +0x00c ExceptionAddress : Ptr32 Void //异常发生地址
   +0x010 NumberParameters : Uint4B //附加参数个数
   +0x014 ExceptionInformation : [15] Uint4B //附加参数指针

猜你喜欢

转载自blog.csdn.net/lifeshave/article/details/87517458
00
今日推荐