PDA

Просмотр полной версии : 0x00000109 BSOD или супернуб пишет драйвер


supernewbie
25.08.2013, 23:09
Суть:
Процессор 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/windows/hardware/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?