C ++ Возможно ли получить доступ к ключу реестра в режиме ядра? - PullRequest
0 голосов
/ 15 октября 2011

Когда я использовал C #, я мог получить доступ только к реестру в режиме пользователя.

Очень сложно получить доступ к реестру в режиме ядра с помощью C ++?

Я помню, что читал где-то, возможно, мне нужно создать фиктивный драйвер для Windows или что-то в этом роде?

РЕДАКТИРОВАТЬ: В основном, как хобби проект, я хочу создать простой монитор реестра. Однако я хочу перехватить доступ к реестру в режиме ядра (а также в режиме пользователя) ..... в прошлый раз, когда я делал это, используя C #, я не смог получить доступ к активности режима ядра.

1 Ответ

2 голосов
/ 26 июля 2012

Для этого есть два способа:

  • Подключить соответствующие функции в ядре - традиционным способом - который требует C / Kernel Driver.Это возможно в Windows x86, но в x64 Kernel Patch Protection обнаружит эти изменения и завершит работу системы (с синим экраном).
  • Создание фильтра реестра драйвер - это рекомендуемый способ решения этой проблемы и способ работы монитора процессов.Таким же образом вы можете создавать драйверы фильтров файловой системы.По сути, вам просто нужно передать информацию обратно в пользовательскую область, которая сводится к следующему:

    IoRegisterDevice(...somewhere in \Devices\YourDriverName...)
    IoCreateSymbolicLink(\\DosDevices\Name -> \Devices\YourDriverName)
    

    , тогда приложение на C, C ++, C # должно открывать для него файл \\.\YourDriverName и DeviceIoControlи получать ответы.

* * можно использовать для написания драйверов ядра на C ++, но посмотрите перед тем, как приступить к работе .Чтобы быть более понятным, вы должны быть очень осторожны с памятью в режиме ядра (постраничный, не страничный) и у вас не будет доступа к большей части стандартной библиотеки.

В качестве отступления, вы должны знатьчто:

  • Не все кусты реестра доступны для драйверов режима ядра, в зависимости от контекста.
  • Пути не являются общими.Таким образом, ядро ​​обращается к \Registry\System, тогда как пользовательский доступ обращается к HKLM.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...