Суть:
Процессор AMD64,
маленький драйвер написал на VS
Заменяю системный syscall handler своим, а в нем прыжок обратно в системный
Win 8.1 x64, система работает 40-60 минут, потом BSOD указывающий прямо на MSR 0xC0000082
(BSOD Error Code: 0x00000109)
C код:
...
SetOldSysenterEntry(__readmsr(0xC0000082));
__writemsr(0xC0000082,&SyscallHandler);
...
MASM:
...
OldSysenterEntry dq 0
.code
SetOldSysenterEntry PROC
mov OldSysenterEntry, rcx
ret
SetOldSysenterEntry ENDP
SyscallHandler PROC
jmp [OldSysenterEntry]
SyscallHandler ENDP
...
из-за чего это может происходить?
где-то в инете нашел что винда сама смотрит за изменением регистров или своего кода и при обнаружении генерит исключение
Добавлено через 4 часа 58 минут
ну за**ись,
http://msdn.microsoft.com/en-us/wind.../gg487350.aspx
Patching any part of the kernel (
detected only on AMD64-based systems)
...
If your driver must perform a task that you think cannot be accomplished without patching the kernel, then contact
KPPinput@Microsoft.com for help in finding a documented and supported alternative.
...
ща напишу им, ага...
Добавлено через 16 минут
However, patch protection is automatically disabled when a kernel debugger is attached to the system.
кажись вот оно
Добавлено через 2 часа 20 минут
черт, не охото под дебагером вечно сидеть, есть какие ещё варианты
помимо
использования Intel процессора или установки Windows 2000?