操作系统为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了