Esempio n. 1
0
int emulate_done(int rc, size_t sz)
{
   switch(rc)
   {
   case VM_DONE:
      vm_update_rip(sz);
   case VM_DONE_LET_RIP:
      info->vm.cpu.emu_sts = EMU_STS_DONE;
      break;
   }

   return rc;
}
Esempio n. 2
0
int vmx_vmexit_resolve_dr_access()
{
   vmcs_exit_info_dr_t *access;
   uint8_t             gpr;

   vmcs_read(vm_exit_info.qualification);
   access = &vm_exit_info.qualification.dr;
   gpr = GPR64_RAX - (access->gpr & GPR64_RAX);

   if(__resolve_dr(!access->dir, access->nr, gpr) == DR_SUCCESS)
   {
      info->vm.cpu.emu_done = 1;
      vmcs_read(vm_exit_info.insn_len);
      vm_update_rip(vm_exit_info.insn_len.raw);
      return 1;
   }

   return 0;
}