【问题标题】:Retrieving all 32 bit process modules from 64 bit application (C#)从 64 位应用程序 (C#) 中检索所有 32 位进程模块
【发布时间】:2011-11-02 22:11:31
【问题描述】:

我有一个 64 位程序,可以从其他进程中检索进程模块,但是当我尝试从 32 位进程中获取模块时,我只得到:

  1. 应用程序可执行文件。 - 各种
  2. ntdll.dll - 总是
  3. wow64.dll - 总是
  4. wow64cpu.dll - 总是
  5. wow64win.dll - 总是

但进程还有许多其他模块。

我可以从 64 位应用程序(C#)中获取所有 32 位进程模块吗?

谢谢!

【问题讨论】:

    标签: c# process module


    【解决方案1】:

    是的,但您需要 p/invoke。

    DbgHelp API 可能会被哄骗来执行此操作,但我被告知尽管具有适当大小的结构,但在针对 Win32-on-Win64 调用时,它仅返回 64 位 WOW64 仿真层 DLL过程。

    【讨论】:

    • 事实上,这与工具帮助 API(使用 Windows 7 系统目录中的 dbghelp 6.1 测试)具有相同的位数限制,因此产生与问题中相同的输出。看来我过早地投了赞成票。 ;-)
    • @DavidHeffernan:我认为已修复
    • 是的,我认为这是准确的。我认为在你在这里纠正我至少 50 次之后,这可能是第一次朝另一个方向发展。 ;-)
    【解决方案2】:

    wow64* 模块是 x86 的中继层。您的所有 x86 模块都应显示为由 thunking 模块加载。

    【讨论】:

      猜你喜欢
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 2022-01-20
      • 2013-03-11
      • 1970-01-01
      • 2011-04-17
      相关资源
      最近更新 更多