Я пытаюсь прочитать память процесса, используя следующий код:
void readdata(HANDLE phandle, LPCVOID paddress, SIZE_T datasize)
{
char *buff;
SIZE_T dataread;
BOOL b = FALSE;
buff = (char *) malloc (datasize);
b = ReadProcessMemory(phandle, paddress, (LPVOID)buff, datasize, &dataread);
if(!b)
{
printf("error reading memory, err = %d\n", GetLastError());
return;
}
printf("Data Read = %d\n", dataread);
printf("Len of actual buffer = %d\n", strlen(buff));
printf("Data = %s\n", buff);
free(buff);
return;
}
Теперь, phandle и paddress известны, потому что я использовал WriteProcessMemory. У меня есть значения оттуда. Размер данных также известен.
Функция работает нормально, за исключением следующего. ReadProcessMemory () возвращает dataread = 41 (это правильно, я передал 41 для изменения размера данных), но фактическая длина баффа равна 49. Когда я печатаю бафф, я получаю свою строку + немного мусора.
Что я делаю не так?
код приветствуется.
Спасибо!