SYSTEMSERVICE(ZwCreateKey) = (DWORD) NewZwCreateKey;
SYSTEMSERVICE(0x77D50F0D) = (DWORD) NewNtUserSetClipboardData;
_asm sti
0x77D50F0D адрес NtUserSetClipboardData в user32.dll
для ZwCreateKey и еще нескольких функций из ntdll.dll все работает, для NtUserSetClipboardData — синий экран.
по адресу (PUCHAR)NtUserSetClipboardData + 1 лежит значение 0x11FC, а значение количества сервисов 0x11c.
т.е. явно выход за границу, но код NtUserSetClipboardData полностью аналогичен коду ZwCreateKey, разница только в номере сервиса. как же он тогда работает и где я не прав ?