请教:在64位操作系统中64位进程如何枚举32位进程中加载的模块?

时间:2022-11-06 14:24:37
如题:
操作系统为Windows7 x64,主进程为x64,目标进程为x86;
由于Win64系统会模拟x86的环境来运行x86的程序,使用的组件为Wow64xxx.dll等;
所以在使用如下代码进行枚举得到的只有Wow64xxx.dll等,得不到真正加载的组件;
代码:
Process proc = Process.GetProcessById(targetProcessId);
for (int i = 0; i < proc.Modules.Count; i++)
{
    //此处在x64环境中无法获得x86进程中的组件
    Console.WriteLine(proc.Modules[i].ModuleName);
}
问题:如何获得x86目标进程中真正加载的组件?
请不吝赐教!

8 个解决方案

#1


求解释,求回复。。。

#2


结贴率是亮点

#3


这个是首发帖。。。

#4


太底层的东西c#不好实现,你查一下api看

#5


用API的结果和上述代码得到的结果一致。。。

#6


Wow64xxx.dll就是真正加载的组件.你还要什么?在深入就直接进内核了.

#7


说目标的x86进程中加载了其他依赖的组件比如A.dll通过上述的方式没有办法获取到。。。

#8


EnumProcessModulesEx  最后的参数设置成LIST_MODULES_ALL,64位的进程枚举出来的32模块就不是WoW***.dll了

#1


求解释,求回复。。。

#2


结贴率是亮点

#3


这个是首发帖。。。

#4


太底层的东西c#不好实现,你查一下api看

#5


用API的结果和上述代码得到的结果一致。。。

#6


Wow64xxx.dll就是真正加载的组件.你还要什么?在深入就直接进内核了.

#7


说目标的x86进程中加载了其他依赖的组件比如A.dll通过上述的方式没有办法获取到。。。

#8


EnumProcessModulesEx  最后的参数设置成LIST_MODULES_ALL,64位的进程枚举出来的32模块就不是WoW***.dll了