首页
社区
课程
招聘
未解决 [已解决]求教VMCS中的VM_ENTRY_INSTRUCTION_LEN作用是什么?
发表于: 2020-4-2 12:31 2194

未解决 [已解决]求教VMCS中的VM_ENTRY_INSTRUCTION_LEN作用是什么?

2020-4-2 12:31
2194
在阅读HyperPlatform代码时,在VM退出事件处理中,处理软件断点异常时,他把导致vm exit的指令长度写到vmcs的VM_ENTRY_INSTRUCTION_LEN中,请问这个是做什么用的呢?
    // Software exception
    if (vector == InterruptionVector::kBreakpointException) {
      // #BP
      VmmpInjectInterruption(interruption_type, vector, false, 0);
      HYPERPLATFORM_LOG_INFO_SAFE("GuestIp= %016Ix, #BP ", guest_context->ip);
      const auto exit_inst_length =
          UtilVmRead(VmcsField::kVmExitInstructionLen);
      UtilVmWrite(VmcsField::kVmEntryInstructionLen, exit_inst_length);

还有开启vt的时候是怎么保证软件断点不会重复触发vm exit并且同时客户机操作系统能够捕获软件断点异常的呢?
感谢!

[课程]FART 脱壳王!加量不加价!FART作者讲授!

最后于 2020-4-3 16:02 被神雕大侠X编辑 ,原因: 已解决
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 4870
活跃值: (53)
能力值: ( LV5,RANK:78 )
在线值:
发帖
回帖
粉丝
2
由指令引发的exit,回去guest后,将从引起exit指令的下一条开始执行。
2020-4-2 18:06
0
雪    币: 3
活跃值: (48)
能力值: ( LV4,RANK:49 )
在线值:
发帖
回帖
粉丝
3
hercules 由指令引发的exit,回去guest后,将从引起exit指令的下一条开始执行。
大佬,还有个问题想问下,就是vm exit能不能捕获单步异常呀,不是Monitor Trap Flag,而是eflags里面的TF,麻烦大佬解答,感谢!
2020-4-2 19:55
0
雪    币: 615
活跃值: (530)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
UtilVmWrite(VmcsField::kVmEntryIntrInfoField, inject.all);   这个就是插入一个异常给GUEST(可以理解成把中断返还给GUEST)
UtilVmWrite(VmcsField::kGuestRip, guest_ip + exit_instruction_length);这条指令可以确保相同的EXIT不会重复触发(RIP+1可以跳过 int 3指令)
VmmpHandleException 单步异常应该也是在这里接收到,

2020-4-3 11:59
0
雪    币: 3
活跃值: (48)
能力值: ( LV4,RANK:49 )
在线值:
发帖
回帖
粉丝
5
ugvjewxf UtilVmWrite(VmcsField::kVmEntryIntrInfoField, inject.all); 这个就是插入一个异常给GUEST(可以理解成把中断返还给GUEST) Uti ...
感谢楼上各位!
2020-4-3 15:41
0
游客
登录 | 注册 方可回帖
返回
//