Как зарегистрировать программное прерывание в Windows KMDF? - PullRequest
0 голосов
/ 21 мая 2018

Я хочу зарегистрировать новое программное прерывание с помощью соответствующей сервисной процедуры в Windows 10 x64, возможно ли это - есть ли API для этого?Нужно ли выполнять это вручную, используя недокументированные функции, и будет ли это запускать Kernel Patch Protection?

1 Ответ

0 голосов
/ 08 июля 2018

Регистрация программного прерывания приводит к изменению таблицы дескрипторов прерываний (IDT) для работающей операционной системы.Windows имеет Kernel Patch Protection (KPP) / PatchGuard, которая защищает код ядра и структуры данных, такие как IDT, от подделки.Это включает в себя предотвращение добавления новых записей дескриптора прерывания, их удаление и изменение таблицы дескрипторов в целом.

Это также означает, что записи дескриптора прерывания не могут быть изменены.Причина, по которой разработчики могут это сделать, заключается в том, чтобы перенаправить прерывания на новые подпрограммы обработки прерываний, также известные как перехват прерываний.Это также предотвращается из-за KPP / PatchGuard.

Вообще говоря, для 64-разрядных версий Windows, начиная с XP, PatchGuard / KPP не позволяет каким-либо образом изменять IDT.Однако Microsoft явно заявила, что KPP / PatchGuard отключается, когда активирован отладчик ядра.Хотя критический код ядра и структуры данных, такие как IDT, все еще могут быть изменены в 32-разрядных версиях Windows независимо от того, присутствует отладчик ядра или нет.

...