首页 > 其他 > 详细

系统调用

时间:2020-03-30 16:54:27      阅读:64      评论:0      收藏:0      [点我收藏+]

Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html

系统调用

 

2. Int 0x2E进入零环

  如果不支持KiFastCall指令进入零环,其会通过Int 0x2E 进入中断。

  0x2E*8h = 0x170h,即IDT+0x170h的偏移。

  IDT表的位置

  技术分享图片

   IDT+0x170处

  技术分享图片

   因此可以验证其通过_KiSystemService这个函数进入零环。

   

3. CS/SS/ESP/EIP的替换

  三环进零环,必须要替换这四个寄存器,那是如何进行替换的呢?

  调用 Int 0x2E 时,其中断门描述符自身就自动指明 CS EIP。 《中断门》

  技术分享图片

  SS ESP 则是由TSS任务段中指明的,其有一块区域SS0、ESP0保存的就是进入零环时的值。《TSS任务段》

  技术分享图片

   这样就很容易找到要替换的 SS CS ESP EIP 四个寄存器了。

  

4. KiSystemSerivce函数分析-三环进零环如何保存现场

  本质是保存_KTRAP_FRAME这个结构体,然后将该区域的指针存放在_Ethread+0x124(pKtrapFrame),而原先的则保存在当前KrapFrame.ebx的位置。

  看懂下面汇编代码(KisystemService),需要准备以下几点:

  1)查看_KTRAP_FRAME 、 _ETHREAD、_KPCR 三个结构体信息。

  2)内存地址 0FFDFF000h保存的是_KPCR地址。

  3)之后照着相关结构体和汇编代码一步步分析即可。(注释有详细介绍,很好理解)

  技术分享图片

系统调用

原文:https://www.cnblogs.com/onetrainee/p/12599328.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!