我正在编写一个C ++程序,需要告诉我给定进程加载的所有模块。我开始研究EnumProcessModules,但它警告:“EnumProcessModules函数不检索使用LOAD_LIBRARY_AS_DATAFILE标志加载的模块的句柄。有关更多信息,请参阅LoadLibraryEx。”
不幸的是,LoadLibraryEx没有提供任何关于如何识别以这种方式加载的进程的见解。它只提供将其作为数据文件加载不会阻止任何其他进程更改库。
是否有办法识别动态加载LoadLibraryEx的库?
答案 0 :(得分:2)
使用VirtualQueryEx
枚举进程的虚拟内存。
对于每个MEM_MAPPED
或MEM_IMAGE
范围,使用GetMappedFileName
查询映射的文件名(自Windows 7起在kernel32中;对于PSAPI.DLL中可用的旧版本)。
答案 1 :(得分:1)
CreateToolhelp32Snapshot
的文档没有提到这个限制(但是有其他问题),所以值得一试。