0

我正在编写一个 C++ 程序,它需要告诉我给定进程加载的所有模块。我已经开始研究EnumProcessModules但它警告说:“EnumProcessModules 函数不会检索使用 LOAD_LIBRARY_AS_DATAFILE 标志加载的模块的句柄。有关更多信息,请参阅 LoadLibraryEx。”

不幸的是,LoadLibraryEx没有提供关于如何识别以这种方式加载的任何进程的任何见解。它仅提供将其作为数据文件加载并不会阻止任何其他进程更改库。

有没有办法识别用 LoadLibraryEx 动态加载的库?

4

2 回答 2

5
  1. 用 枚举进程的虚拟内存VirtualQueryEx

  2. 对于每个MEM_MAPPED或范围,使用(自 Windows 7 起在 kernel32 中;对于 PSAPI.DLL 中可用的旧版本)MEM_IMAGE查询映射的文件名。GetMappedFileName

于 2013-06-05T17:33:52.090 回答
1

CreateToolhelp32Snapshot的文档没有提到这个限制(但还有其他的位数问题),所以它可能值得一试。

于 2013-06-05T15:10:15.710 回答