Я хочу получить базовый адрес модуля процесса, чтобы я мог начать поиск в его памяти определенных значений.Я использую Module32First, чтобы получить первый модуль, а затем печатаю baseaddr из MODULEENTRY32, но ничего не появляется.
Я нацеливаюсь на другой процесс, который я написал, он просто распечатывает несколько вещей.Я могу успешно получить ручку к нему так же как ручку снимка.Оба процесса являются 32-битными.Я попытался распечатать другие члены MODULEENTRY32, такие как th32ProcessID и modBaseSize, которые все возвращают значения.Только modBaseAddr является пустым.
Я просматривал документацию, и это должно быть что-то не так с моим кодом.Вот соответствующий фрагмент:
std::cout << "Modules Base Address: " << modStruc.modBaseAddr << std::endl;
Я ожидаю распечатать базовый адрес первого модуля, но фактический вывод будет пустым (так как ничего не отображается).Насколько я понимаю, Module32First копирует первую запись модуля в мой MODULEENTRY32 modStruc, и после этого я распечатываю его член modBaseAddr.
Обновление для всех с похожими проблемами: я не нашел решения дляМоя конкретная дилемма, но с тех пор я перешел на использование GetModuleInformation, которая также дает адрес загрузки модуля, точку входа и размер.