感谢您花时间阅读本文。
情况基本上是,我使用 EnumProcessModulesEx 枚举加载进程中的所有模块。我已验证我使用 GetCurrentProcess 获得的流程是正确的(通过 ID)。我似乎得到了所有加载的模块,除了我想要的那个!它是一个 C# DLL,仅在调用 C# DLL 函数时加载。我确保在运行枚举函数之前加载了 DLL。此 C# DLL 不显示是否有原因?
我还在我的 C++ 代码中加载了几个其他 C# DLL 之后放置了这个枚举。它似乎也没有找到那些。所有这些 C# DLL 都是动态加载的。我认为这无关紧要,因为 a) 所有内容都映射到进程地址空间,并且 b) 我有一个注入(inject)的 C++ DLL(动态加载?),我发现它很好。我的目标是能够 Hook C# DLL 函数,因此能够找到这些 C# DLL 是这个项目中必须的。
再次感谢大家提供任何提示或见解! =)
最佳答案
EnumProcessModulesEx
不会枚举 .Net DLL。它仅枚举 native DLL。
您可以使用当前 AppDomain
的 GetAssemblies
方法来枚举 .Net DLL。
关于C++,在枚举加载的模块时找不到加载的 C# DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6658394/