Прокси водителя, чтобы избежать повторного подписания кода в Windows
-
01-10-2019 - |
Вопрос
Драйверы в Windows должны быть подписаны и отправлены в Microsoft для подписания кода, и это требование для 64-битных систем. Проблема в том, что, когда вам нужно обновить драйвер, вы должны отправить его снова, один раз для каждого выпуска.
Можно построить какой-то прокси или прокладки, чтобы я должен подписать и отправить его только один раз, а затем иметь свой код в отдельном модуле?
Конечно, я не могу просто переместить рабочий код в DLL, так как также должны быть подписаны динамически загруженные модули для выполнения в 64-битном режиме ядра. Что если я поставим свой код в необработанный файл, загрузите его в память (выделено с включенным флагом выполнения), а затем выполнить его? Другие идеи?
Решение
Вам не нужно отправлять драйвер в Microsoft. Вы должны подписать свой драйвер с помощью перекрестного подписания. Вы получите NAG-экран таким образом, но это не запрещено!
Были (есть) несколько попыток сделать только то, что вы хотите сделать. Это «едва» переносится, но эти драйверы могут быть запрещены в любое время. (Отменяя вашу подпись)
Процесс очень прост:
- Загрузить подписанный драйвер.
- Укажите iocontrol, в котором программы пользовательского режима могут отправлять память в ядро.
- Измените файл выполнения этой памяти и просто вызовите адрес в этой памяти.