-
-
[原创]win7 x64 IDT 0E KiPageFault分析
-
发表于:
2019-4-26 01:54
9747
-
[原创]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 着俩函数实现太多了 就没分析了 不然真想看看他怎么处理异常的
下面就是紧接着判断异常代码 然后分发异常 没人处理就直接蓝屏了
最后就是还原环境 准备退出了 实力有限 只能分析出这么多东西
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
最后于 2019-4-26 01:55
被不吃麻婆豆腐编辑
,原因: