Small fixes

This commit is contained in:
momo5502 2024-04-06 18:40:55 +02:00
parent 6f653e3032
commit 240a6da306
2 changed files with 21 additions and 10 deletions

View File

@ -512,6 +512,8 @@ bool log_cpuid_call(uintptr_t guest_rip, uintptr_t rax, uintptr_t rcx, const INT
filename, filename,
guest_rip, rax, rcx, cpu_info[0], cpu_info[1], cpu_info[2], cpu_info[3]); guest_rip, rax, rcx, cpu_info[0], cpu_info[1], cpu_info[2], cpu_info[3]);
//debug_log("OVERHEAD\n");
return true; return true;
} }
@ -556,36 +558,38 @@ void vmx_handle_cpuid(vmx::guest_context& guest_context)
// [MOMO] CPUID call(HogwartsLegacy) : 140D2451B - (EAX : 80000006 - ECX : 00000000) - (EAX : 00000000 - EBX : 00000000 - ECX : 01006040 - EDX : 00000000) // [MOMO] CPUID call(HogwartsLegacy) : 140D2451B - (EAX : 80000006 - ECX : 00000000) - (EAX : 00000000 - EBX : 00000000 - ECX : 01006040 - EDX : 00000000)
// [MOMO] CPUID call (HogwartsLegacy): 1405F4817 - (EAX: 00000004 - ECX: 00000000) - (EAX: 1C004121 - EBX: 01C0003F - ECX: 0000003F - EDX: 00000000) // [MOMO] CPUID call (HogwartsLegacy): 1405F4817 - (EAX: 00000004 - ECX: 00000000) - (EAX: 1C004121 - EBX: 01C0003F - ECX: 0000003F - EDX: 00000000)
bool allow_all = true;
// not sure if necessary // not sure if necessary
if (_rax == 0) if (_rax == 0 && allow_all)
{ {
cpu_info[0] = 0x00000016; cpu_info[0] = 0x00000016;
cpu_info[1] = 0x756E6547; cpu_info[1] = 0x756E6547;
cpu_info[2] = 0x6C65746E; cpu_info[2] = 0x6C65746E;
cpu_info[3] = 0x49656E69; cpu_info[3] = 0x49656E69;
} }
else if (_rax == 4) else if (_rax == 4 && allow_all)
{ {
cpu_info[0] = 0x00000000; cpu_info[0] = 0x00000000;
cpu_info[1] = 0x01C0003F; cpu_info[1] = 0x01C0003F;
cpu_info[2] = 0x0000003F; cpu_info[2] = 0x0000003F;
cpu_info[3] = 0x00000000; cpu_info[3] = 0x00000000;
} }
else if (_rax == 7) else if (_rax == 7 && allow_all)
{ {
cpu_info[0] = 0x1C004121; cpu_info[0] = 0x1C004121;
cpu_info[1] = 0x029C6FBF; cpu_info[1] = 0x029C6FBF;
cpu_info[2] = 0x40000000; cpu_info[2] = 0x40000000;
cpu_info[3] = (INT32)0xBC002E00; cpu_info[3] = (INT32)0xBC002E00;
} }
else if (_rax == 0x80000000) else if (_rax == 0x80000000 && allow_all)
{ {
cpu_info[0] = (INT32)0x80000008; cpu_info[0] = (INT32)0x80000008;
cpu_info[1] = 0x00000000; cpu_info[1] = 0x00000000;
cpu_info[2] = 0x00000000; cpu_info[2] = 0x00000000;
cpu_info[3] = 0x00000000; cpu_info[3] = 0x00000000;
} }
else if (_rax == 0x80000006) else if (_rax == 0x80000006 && allow_all)
{ {
cpu_info[0] = 0x00000000; cpu_info[0] = 0x00000000;
cpu_info[1] = 0x00000000; cpu_info[1] = 0x00000000;
@ -595,11 +599,11 @@ void vmx_handle_cpuid(vmx::guest_context& guest_context)
// absolutely necessary v // absolutely necessary v
else if (_rax == 1) else if (_rax == 1 && allow_all)
{ {
cpu_info[0] = 0x000906EA; cpu_info[0] = 0x000906EA;
cpu_info[1] = 0x04100800; cpu_info[1] = 0x04100800;
cpu_info[2] = 0x7FFAFBFF; cpu_info[2] = 0x7FFAFBFF & (~0xC000000);
cpu_info[3] = (INT32)0xBFEBFBFF ; cpu_info[3] = (INT32)0xBFEBFBFF ;
} }
else if (_rax == 0x80000002) else if (_rax == 0x80000002)
@ -623,8 +627,12 @@ void vmx_handle_cpuid(vmx::guest_context& guest_context)
cpu_info[2] = 0x00000000; cpu_info[2] = 0x00000000;
cpu_info[3] = 0x00000000; cpu_info[3] = 0x00000000;
} }
else else if(false)
{ {
cpu_info[0] = 0;
cpu_info[1] = 0;
cpu_info[2] = 0;
cpu_info[3] = 0;
debug_log("Not zeroing!\n"); debug_log("Not zeroing!\n");
} }

View File

@ -46,8 +46,11 @@ namespace
static driver_device device{}; static driver_device device{};
if (!hypervisor) if (!hypervisor)
{
try
{ {
hypervisor = create_driver(); hypervisor = create_driver();
}catch(...){}
} }
if (!device) if (!device)