ПОМОГИТЕ!!
Kdmapper очевидно передаёт мусор вместо DriverObject - этот параметр не юзабелен если маппером грузишь свой драйвер там мусорЕсли закомментировать данную функцию то всё ок
DriverObject->DriverUnload = UnloadDriver;
Перед тем, как вопить "помогите!!!" надо скинуть свой код, что можно было хоть что то понять экспертам.
#include <ntifs.h>
VOID UnloadDriver(_In_ struct _DRIVER_OBJECT* DriverObject);
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath);
NTKERNELAPI VOID NTAPI IoDeleteDriver(PDRIVER_OBJECT DriverObject);
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)
{
UNREFERENCED_PARAMETER(RegistryPath);
DriverObject->DriverUnload = UnloadDriver;
DbgPrintEx(0, 0, "Driver Load");
return STATUS_SUCCESS;
}
VOID UnloadDriver(_In_ struct _DRIVER_OBJECT* DriverObject)
{
UNREFERENCED_PARAMETER(DriverObject);
DbgPrintEx(0, 0, "Driver Unload");
DriverObject->DriverUnload = NULL;
IoDeleteDriver(DriverObject);
}
Занулил на всякий случай а касательно функции она является не задокументированной если ты откроешь WinDbg, Ida.. и посмотришь то ты обязательно её там найдёшьНе понимаю, зачем ты используешь IoDeleteDriver, в wdm вообще этого не нашел. И зачем ты зануляешь в DriverObject член DriverUnload, если ты все равно хочешь удалить объект?
Хорошо если тебя так эта функция не устраивает то её можно вырезать но от этого ничего не поменяется синий экран всё равно будет вылетать проблема не в этомТак ты тогда посмотри особенности самой функции в иде, там скорее всего что то обрабатывается без проверки.
Хорошо если тебя так эта функция не устраивает то её можно вырезать но от этого ничего не поменяется синий экран всё равно будет вылетать проблема не в этом
Типо функция принимает один параметр и это указатель на объект что тут может быть не такТак ты тогда посмотри особенности самой функции в иде, там скорее всего что то обрабатывается без проверки.
И где найти этот префикс ?Процедура выгрузки драйвера, если она предусмотрена, должна называться XxxUnload, где Xxx — префикс, специфичный для драйвера.
Что конкретно мне надо изменить чтобы код корректно работал ?Процедура выгрузки драйвера, если она предусмотрена, должна называться XxxUnload, где Xxx — префикс, специфичный для драйвера.
DRIVER_UNLOAD callback function
Префикс не имеет значения я могу назвать функцию выгрузки как хочуПроцедура выгрузки драйвера, если она предусмотрена, должна называться XxxUnload, где Xxx — префикс, специфичный для драйвера.
DRIVER_UNLOAD callback function
Хорошо какой мне поставить префикс тогда чтобы драйвер работал ?префикс вообще то - это имя службы драйвера
Я просто через kdmapper запускаюты как драйвер запускаешь? какое имя сервиса указываешь? и не забудь объявить DRIVER_UNLOAD {prefix}Unload;
ты как драйвер запускаешь? какое имя сервиса указываешь? и не забудь объявить DRIVER_UNLOAD {prefix}Unload;
#include <ntifs.h>
//VOID UnloadDriver(_In_ struct _DRIVER_OBJECT* DriverObject);
NTKERNELAPI VOID NTAPI IoDeleteDriver(PDRIVER_OBJECT DriverObject);
DRIVER_UNLOAD UnloadDriver;
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
{
UNREFERENCED_PARAMETER(RegistryPath);
DriverObject->DriverUnload = UnloadDriver;
DbgPrintEx(0, 0, "Driver Load");
//IoDeleteDriver(DriverObject);
return STATUS_SUCCESS;
}
VOID UnloadDriver(_In_ PDRIVER_OBJECT DriverObject)
{
UNREFERENCED_PARAMETER(DriverObject);
DbgPrintEx(0, 0, "Driver Unload");
//DriverObject->DriverUnload = NULL;
//IoDeleteDriver(DriverObject);
}