Как читать строку с помощью драйвера ядра
таким образом, мой драйвер может читать целые числа, DWORD64 и т. д., Но теперь я хочу читать строки, Я перепробовал много вещей и уверен, что этот должен работать, но по какой-то причине он отображает некоторые случайные символы
вот как я читаю из ядра
<pre>PCHAR ReadMem_String(MEMDATA *data) { NTSTATUS ntStatus; PEPROCESS targetProc; char string[12800] = ""; ntStatus = PsLookupProcessByProcessId((HANDLE)(*data).proccessId, &targetProc); if (ntStatus != STATUS_SUCCESS || !targetProc) return; __try { KeAttachProcess((PKPROCESS)targetProc); if (MmIsAddressValid((void*)(*data).address)) RtlCopyMemory(string, (const void*)data->address, data->Read); KeDetachProcess(); } __except (GetExceptionCode()) { return; } return(string); }
case(READ_chars): { MEMDATA *userCom = pBuf; PCHAR string = ReadMem_String(userCom); RtlCopyMemory(pBuf, string, strlen(string)); size = strlen(string); break; }
также использую метод buffered
в моей программе пользовательского режима
<pre> char Readchar(UINT64 proccessId, uint64_t address) { MEMDATA dataToSend; uint64_t readBuffer; DWORD64 dwBytesToRead = 0; dataToSend.proccessId = proccessId; dataToSend.address = address; dataToSend.Read = 0; DeviceIoControl(hDriver, READ_INT, &dataToSend, sizeof(MEMDATA), &readBuffer, sizeof(readBuffer), 0, 0); CloseHandle(hDriver); return((char)readBuffer); }
и я преобразую символы в строки Вот так
<pre lang="c++"><pre> char test = Driver.Readchar(PID, 0x40E066FDB0); const char* add = reinterpret_cast<const char*>(&test); std::string str = add; printf("String found: %s\n", str.c_str());
и моя структура
typedef struct { DWORD64 proccessId; DWORD64 address; DWORD64 Read; } MEMDATA;
надеюсь, что кто-то сможет мне помочь, и спасибо за это @
Richard MacCutchanза помощь в решении старой проблемы :D
Что я уже пробовал:
<pre lang="c++"><pre>char test = Driver.Readchar(PID, 0x40E066FDB0); const char* add = reinterpret_cast<const char*>(&test); std::string str = add; printf("String found: %s\n", str.c_str());
но это не сработало я хочу почитать
DefaultStringи он читает это так
@ΘùΦ