Прокси драйвера, чтобы избежать повторного подписания кода в Windows - PullRequest
1 голос
/ 01 июля 2010

Драйверы в Windows должны быть подписаны и отправлены в Microsoft для подписи кода, а это требование для 64-битных систем. Проблема в том, что, когда вам нужно обновить драйвер, вы должны отправить его снова, один раз для каждого выпуска.

Можно ли создать какой-нибудь драйвер прокси или шимов, чтобы мне приходилось подписывать и отправлять его только один раз, а затем хранить мой код в отдельном модуле?

Конечно, я не могу просто переместить рабочий код в DLL, так как динамически загружаемые модули должны быть подписаны, чтобы они выполнялись в режиме 64-битного ядра. Что, если я поместил свой код в необработанный файл, загрузил его в память (выделенный с включенным флагом выполнения) и затем выполнил его? Другие идеи?

1 Ответ

0 голосов
/ 01 июля 2010

Вам не нужно отправлять драйвер в Microsoft. Вы должны подписать свой драйвер с сертификатом перекрестной подписи. Таким образом вы получите навороченный экран, но это не запрещено!

Было (есть) несколько попыток сделать то, что вы хотите. Они «едва ли» допускаются, но эти драйверы могут быть забанены в любое время. (Отозвав свою подпись)

Процесс очень прост:

  1. Загрузите подписанный драйвер.
  2. Предоставляет IoControl, в котором программы пользовательского режима могут отправлять память ядру.
  3. Измените бит выполнения этой памяти и просто вызовите адрес в этой памяти.
...