Доброго времени суток. Скомпилировал драйвер под x64, подписал его тестовым сертификатом. Через KmdManager регистрирую и запускаю его, всё нормально. Затем пробую защитить драйвер с помощью VMProtect v2.06. После чего пробую запустить драйвер через KmdManager->Run, но мне выдаёт ошибку: "Попытка обращения к неверному адресу". P.S. -> Какие пути решения?
Я загружаю драйвер через свою программу. (StartService Function) Код (Text): if (StartService(hService, 0, NULL) == false ) { DWORD dwGetLastError = GetLastError(); // 0x1E7; } # System Error Codes: MSDN; P.S. -> Чего делать? # Добавлено: Это что получается, на x64 винде нельзя будет защищать код своих драйверов?
Молодец, а теперь попробуй сделать это либо вызовом ZwLoadDriver() из своей программы, либо поставь точку останова на ZwLoadDriver() в конексте services.exe и скажи, какой код возвращает этот системный вызов. Очень часто NTSTATUS-ы транслируются в Win32 Error Codes не очень информативно, из-за чего сложно установить реальную причину ошибки. Да, приложи ещё конфиг проекта от VMProtect-а, что бы было видно, какие опции защиты используются. Задать вопрос разработчику VMProtect-а.
С х64 действительно есть небольшая проблема - если ничего не виртуализировать, то при пустых релоках (для х64 это не редкость) прот выставляет флаг IMAGE_FILE_RELOCS_STRIPPED и потом винда не может загрузить его по другой базе.