-
-
[原创]win7 x64 IDT 0E KiPageFault分析
-
发表于:
2019-4-26 01:54
10125
-
[原创]win7 x64 IDT 0E KiPageFault分析
最近研究IDT hook 有很多地方不明白 所以就逆向了一遍0E 本人刚入门不久 可能分析的有些地方是错的
首先看下异常堆栈结构
刚进异常的时候 系统会自动往堆栈里面从18c一直压入到168的R3环境 便于iretq返回R3 但是0E比较特殊 系统会多压入一个ErrorCode
所以刚进入0E的时候 RSP所在的位置就在结构体+160的地方
开始 他会保持环境 判断先前模式 然后做不同的处理
是R3他就会swapgs 然后读取msr102 我估计应该是校验gs的准确性
然后保存调试寄存器状态
这里没什么特别的操作 就是保存下环境 各种读取msr 不知道有啥用
然后这里是一些常规的操作 保存寄存器之类的 就是不知道ums是个什么东西
这里出现了两个函数 MmAccessFault 和 KiPreProcessKernelAccessFault 这两个函数 就是关键处理页异常的函数了
在参考wrk和他传入的参数来看 他处理失败会返回错误代码 然后成功会返回0 R3直接
MmAccessFault处理
R0则需要多调用个
KiPreProcessKernelAccessFault 着俩函数实现太多了 就没分析了 不然真想看看他怎么处理异常的
下面就是紧接着判断异常代码 然后分发异常 没人处理就直接蓝屏了
最后就是还原环境 准备退出了 实力有限 只能分析出这么多东西
开始 他会保持环境 判断先前模式 然后做不同的处理
是R3他就会swapgs 然后读取msr102 我估计应该是校验gs的准确性
然后保存调试寄存器状态
这里没什么特别的操作 就是保存下环境 各种读取msr 不知道有啥用
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!
最后于 2019-4-26 01:55
被不吃麻婆豆腐编辑
,原因: