Signed-off-by: Derek Lesho dereklesho52@Gmail.com --- dlls/ntoskrnl.exe/instr.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)
diff --git a/dlls/ntoskrnl.exe/instr.c b/dlls/ntoskrnl.exe/instr.c index 67cdd327ee..192ba05ee4 100644 --- a/dlls/ntoskrnl.exe/instr.c +++ b/dlls/ntoskrnl.exe/instr.c @@ -586,6 +586,12 @@ static BYTE *INSTR_GetOperandAddr( CONTEXT *context, BYTE *instr, }
+static void fake_syscall_function(void) +{ + TRACE("() stub\n"); +} + + /*********************************************************************** * emulate_instruction * @@ -757,6 +763,25 @@ static DWORD emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context ) context->Rip += prefixlen + 3; return ExceptionContinueExecution; } + case 0x32: /* rdmsr */ + { + int reg = context->Rcx & 0xffffffff; + TRACE("rdmsr CR 0x%08x\n", reg); + switch (reg) + { + case 0xc0000082: + { + ULONGLONG syscall_address = (ULONGLONG) fake_syscall_function; + + context->Rdx = (syscall_address >> 32) & 0xffffffff; + context->Rax = syscall_address & 0xffffffff; + } + break; + default: return ExceptionContinueSearch; + } + context->Rip += prefixlen + 2; + return ExceptionContinueExecution; + } case 0xb6: /* movzx Eb, Gv */ case 0xb7: /* movzx Ew, Gv */ {