Я пытаюсь получить имя модуля для каждого потока в процессе. Обозреватель процессов показывает имя модуля, связанного с каждым потоком, без проблем. Я могу без проблем перечислить все модули и все потоки в моем текущем процессе и получить данные, связанные с ними. Мой текущий метод вывода связанного модуля следующий:
if(module.BaseAddress < thread.StartAddress && (module.BaseAddress + module.BaseMemorySize) > thread.StartAddress)
{
// this is our module ;)
}
К сожалению, это не похоже на конкретный способ сделать это. Модуль xfire_toucan.dll отображается в процедуре fine:
1972 : xfire_toucan.dll!ToucanSendGamestatsConsoleLine_V1+0x80
В списке модулей он показан с базовым адресом 0x10000000
и размером 0x26b000
, что дает нам максимальный объем памяти адрес 0x1026b000
. Однако связанный начальный адрес потока - 0x775e2ca0
, который является частью выделенного блока памяти в процессе за пределами диапазона основной памяти модуля.
Есть идеи, как получить такой модуль, как ProcExp?
Я знаю C и C #, поэтому любой из них подходит, но мой проект - C #, поэтому я предпочитаю:]