@Homer_Simpson

Почему не могу прочитать память процесса c++?

HANDLE hProcess= OpenProcess(PROCESS_ALL_ACCESS, false, dwPID);

	if (hProcess)
	{
		SYSTEM_INFO si;
		GetSystemInfo(&si);

		auto minAplAdr = si.lpMinimumApplicationAddress;
		long num = (INT32)minAplAdr;
		MEMORY_BASIC_INFORMATION info;

		BYTE* Buf = new BYTE[61440];
		ReadProcessMemory(hProcess, 0, Buf, (unsigned long)20, (unsigned long*)20);
		std::cout << Buf;

	}
	CloseHandle(hProcess);

Получаю Access violation writing location 0x00000014.
Почему проблема с записью?
  • Вопрос задан
  • 420 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
BOOL WINAPI ReadProcessMemory(
  _In_  HANDLE  hProcess,
  _In_  LPCVOID lpBaseAddress,
  _Out_ LPVOID  lpBuffer,
  _In_  SIZE_T  nSize,
  _Out_ SIZE_T  *lpNumberOfBytesRead
);

*lpNumberOfBytesRead - указатель на переменную, в которую будет записано количество прочитанных байтов. Вы указали, что это количество надо записать по адресу 0x14, вызвав исключение.
Правильно будет так:
SIZE_T bytesRead;
ReadProcessMemory(hProcess, 0, Buf, (unsigned long)20, &bytesRead);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы