Перейти к содержанию

Почему не работает ? c++


Рекомендуемые сообщения

1 час назад, Merlin сказал:

Решил в эту тему запостить: подскажите, пожалуйста, почему при запуске проекта через Visual студию память целевого процесса читается и поля формы трейнера заполняются значениями из целевого процесса (работает ReadMemory), а при запуске файла, скомпилированного из проекта exe'шника, с правами администратора не читается (т.е. нет никаких ошибок, просто все поля формы трейнера пустые)?

может права админа не нужны?

Ссылка на комментарий
Поделиться на другие сайты

WoW.exe всегда запускается с правами администратора, иначе его запустить просто нельзя, скомпилированный Trainer.exe (даже при запуске с правами администратора) не может получить доступ к WoW.exe, доступ работает почему-то только при запуске из Visual Studio). Соответственно функция GetModuleBaseAddress тоже не возвращает результат без запущенной студии. :unsure:

Скрытый текст

DWORD ProcessManager::GetModuleBaseAddress(DWORD ProcID, TCHAR* ModuleName)
{
	DWORD_PTR ModuleBaseAddress = 0;
	HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, ProcID);
	if (hSnapshot != INVALID_HANDLE_VALUE)
	{
		MODULEENTRY32 ModuleEntry32;
		ModuleEntry32.dwSize = sizeof(MODULEENTRY32);
		if (Module32First(hSnapshot, &ModuleEntry32))
		{
			do
			{
				if (_tcsicmp(ModuleEntry32.szModule, ModuleName) == 0)
				{
					ModuleBaseAddress = (DWORD)ModuleEntry32.modBaseAddr;
					break;
				}
			} while (Module32Next(hSnapshot, &ModuleEntry32));
		}
		CloseHandle(hSnapshot);
	}
	return ModuleBaseAddress;
}

 

 

Ссылка на комментарий
Поделиться на другие сайты

Мой вопрос тоже решился. Нужно было установить Debug привилегии у текущего процесса:

Скрытый текст

void EnableDebugPrivilege(bool fEnable)
{

	if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
	{
		TOKEN_PRIVILEGES tp;
		tp.PrivilegeCount = 1;
		LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid);
		tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
		AdjustTokenPrivileges(hToken, false, &tp, sizeof(tp), NULL, NULL);
		CloseHandle(hToken);
	}
}

 

 

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.