KeContextToKframes函数逆向

  在逆向_KiRaiseException(之后紧接着就是派发KiDispatchException)函数时,遇到一个 KeContextToKframes 函数,表面意思将CONTEXT转换为 TRAP_FRAME,但传进去的参数着实有点多,所以简单逆向一下这个函数。

 

 

 

因为能力有限,我们借助WRK源码分析,搞懂其背后逻辑

 

1. 首先,我们看到如下代码解释。

  

 

 

   看到上面,我们应该明确,这个并不是将 context 转换成 frame,而是根据context.flags将 context_frame 转换成 trap_frame。

  context_frame,即三环进零环时,保存三环的现场。当返回时,根据context_frame中的内容来返回。

  因此这段代码的逻辑是:

  

 

 

2. 但是该函数参数还是传入一个CONTEXT,这个有什么用呢?

 

  很遗憾,我们简单地所搜了下源码,并没有发现这个参数有任何用处,的确是Frame之间的转换,而CONTEXT仅提供一个eflags作为参考的功能。

 

 

 

未解决的问题:TRAP_FRAME与CONTEXT_FRAME有什么区别呢?

 

 

posted @ 2019-11-16 10:59  OneTrainee  阅读(494)  评论(2编辑  收藏  举报