Прокси водителя, чтобы избежать повторного подписания кода в Windows

StackOverflow https://stackoverflow.com/questions/3158389

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

  1. Загрузить подписанный драйвер.
  2. Укажите iocontrol, в котором программы пользовательского режима могут отправлять память в ядро.
  3. Измените файл выполнения этой памяти и просто вызовите адрес в этой памяти.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top