首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从32位WOW进程中激活64位进程中的模块

如何从32位WOW进程中激活64位进程中的模块
EN

Stack Overflow用户
提问于 2010-09-27 06:24:49
回答 3查看 17K关注 0票数 19

我需要在Windows中的32位WOW进程中检索64位进程的所有模块,如所述,EnumProcessModules将失败:

如果该函数是从运行在WOW64上的32位应用程序调用的,它只能枚举32位进程的模块。如果进程是64位进程,则此函数将失败,最后一个错误代码是ERROR_PARTIAL_COPY (299)。

如EnumProcessModulesEx和CreateToolhelp32Snapshot。

你对如何实现这个目标有什么想法吗?

谢谢。

EN

Stack Overflow用户

回答已采纳

发布于 2010-09-27 06:27:25

如果不使用无文档的API,就无法做到这一点。通常,由于地址空间的差异,从32位进程读取64位进程的内存将无法工作。

EnumProcessModulesExLIST_MODULES_32BITLIST_MODULES_64BIT过滤器标志,它可以这样说:

此功能主要用于64位应用程序.如果在WOW64下运行的32位应用程序调用该函数,则忽略dwFilterFlag选项,该函数提供与EnumProcessModules函数相同的结果。

您可以通过将您的程序转换为64位,使用separate 64位COM服务器(特别是使用DLL代理,或者有一个单独的与您通信的进程)来做到这一点。或者,根据进程相对于目标进程的启动时间,您可以使用WMI获取模块加载事件。查看Win32_ModuleLoadTrace事件。

过程资源管理器,一个32位的exe,可以向您展示32位和64位进程的模块,但是它确实是一个烟雾和镜像:32位的exe包含64位版本的自身,它被写到磁盘上并在64位机器上执行。

票数 17
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3801517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档