Я пытаюсь прочитать память процесса, используя следующий код:
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 в datasize), но фактическая длина баффа составляет 49. Когда я печатаю бафф, я получаю свою строку + немного мусора.
Что я делаю неправильно?
код приветствуется.
Спасибо!