Получить модуль владельца по адресу памяти

Я перебираю свою память процесса с помощью VirtualQuery, я хотел бы знать, кому принадлежит определенный диапазон памяти. Либо исполняемый файл, либо какой-нибудь другой dll, и получите его имя.

Есть ли способ, которым я могу узнать?

1 ответ

Да, значение дескриптора модуля в Windows - это просто базовый адрес выделения виртуальной машины для модуля.

Таким образом, вы можете привести MEMORY_BASIC_INFORMATION.AllocationBase, к которой вы вернетесь (HMODULE), и передать его в GetModuleFileName(). Конечно, имейте в виду, что это работает только для выделений, которые были сделаны для кода, загруженного из исполняемых файлов. Обычно вы сталкиваетесь с большим количеством выделенных виртуальных машин с помощью VirtualQuery(), которые представляют собой данные или стеки. Они не имеют владельца и не связаны с модулем.

Другие вопросы по тегам