-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Написал драйвер для чтения/записи, но возникла проблема.
Я не могу получить истинное значение buffer на стороне клиента. Выводить должно "1000", но выводит "1".
Однако в полученном значении buffer из драйвера значение 1000 присваивается переменной ( видно на скриншоте в dbgview )
Я так понимаю проблема с кодом на стороне клиента, вот код:
Я не могу получить истинное значение buffer на стороне клиента. Выводить должно "1000", но выводит "1".
Однако в полученном значении buffer из драйвера значение 1000 присваивается переменной ( видно на скриншоте в dbgview )
Я так понимаю проблема с кодом на стороне клиента, вот код:
C++:
// структура для driver/client
struct KERNEL_MEMORY {
ULONG PROCESSID;
LONG64 PROCESSADDRESS;
PVOID PROCESSBUFFER;
ULONG BUFFERSIZE;
};
// функция чтения памяти
template <typename TYPE>
TYPE DriverReadMemory(ULONG pId, LONG64 address) {
TYPE buffer;
km.PROCESSID = pId;
km.PROCESSADDRESS = address;
km.PROCESSBUFFER = reinterpret_cast<PVOID>(&buffer);
km.BUFFERSIZE = sizeof(TYPE);
DWORD result;
BOOL Success = DeviceIoControl(hDriver, READ_REQUEST, &km, sizeof(km), nullptr, 0, &result, nullptr);
if (Success) {
return buffer;
}
}