VMM利用MTF实现单步调试

bammo 2016-07-23 07:46:33
简单介绍一下问题背景:在VMM中利用EPT将指定页面的访问权限设置成不可写,当有进程(或内核模块)对页面进行写操作时,将产生VM Exit陷入VMM,在VMM中进行相应处理后,退回guest,允许该写操作的执行(即将页面访问权限设置为可写);同时为了下次写操作时能继续陷入,需要将指定页面的访问权限重置为不可写。
为了达到重置EPT访问权限的目的,我打算利用MTF来实现VMM的单步调试,当将mtf标志位置1时,guest每执行一条指令后,都会产生一个MTF VM exit而陷入VMM,在此时机可重新将页面权限设置成不可写。在此期间遇到两个问题:
(1)客户机因EPT-Violation陷入VMM时,指令寄存器RIP指向当前正在执行的指令,还是当前指令的下一条指令?
(2)一次对指定页面的写操作触发的EPT-violation,按照上面的描述过程,按理说,执行过程如下(EPT-violation->处理,赋予写权限->返回客户机执行写指令->mtf vm exit->取消写权限->结束)。然而实际却会会持续陷入VMM,而每次陷入时RIP指令寄存器存储的指令地址都是相同的,该写操作一直在执行。请问实际和理论的出入是为什么?
希望大神能帮我解答下~
...全文
4061 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,025

社区成员

发帖
与我相关
我的任务
社区描述
Linux /Unix kernel支持不同的硬件体系,X86, ARM, MIPS, 等等
社区管理员
  • CPU和硬件区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧