【发布时间】:2011-03-01 16:10:23
【问题描述】:
我正在尝试获取进程中每个线程的模块名称。进程资源管理器显示与每个线程关联的模块名称没有问题。我可以毫无问题地枚举当前进程中的所有模块和所有线程,并获取与它们相关的数据。我目前推导关联模块的方法如下:
if(module.BaseAddress < thread.StartAddress && (module.BaseAddress + module.BaseMemorySize) > thread.StartAddress)
{
// this is our module ;)
}
不幸的是,这似乎不是一个具体的方法。 xfire_toucan.dll 模块显示在 procexp 中:
1972 : xfire_toucan.dll!ToucanSendGamestatsConsoleLine_V1+0x80
在模块列表中,它以0x10000000 的基本地址和0x26b000 的大小显示,为我们提供了0x1026b000 的最大内存地址。但是,关联的线程起始地址是0x775e2ca0,它是在模块主内存范围之外的进程中分配的内存块的一部分。
知道如何像 ProcExp 那样获取模块吗?
我知道 C 和 C#,所以两者都可以,但我的项目是 C#,所以这是首选:]
【问题讨论】:
标签: c# windows multithreading winapi module