【问题标题】:Hooking a 64 bit process from 32 bit app从 32 位应用程序挂钩 64 位进程
【发布时间】:2014-02-16 13:03:37
【问题描述】:

我正在使用SetWindowHookEx 将 DLL 加载到另一个进程中,但我需要能够同时挂接到 32 位和 64 位进程。我想我需要两个单独的 DLL,但是我可以在不创建两个版本的“启动器”应用程序的情况下做到这一点吗?我需要将 DLL 句柄传递给 SetWindowsHookEx,但我无法使用 LoadLibrary 来获取它。

【问题讨论】:

  • 也许(视情况而定)。看到这个answer
  • 请考虑将 C++ 语言标记替换为提供您所针对的精确平台的标记,因为这似乎是运行时链接器问题,而不是语言问题。
  • 您确实需要不同的 dll:support.microsoft.com/kb/282423。对于普通的东西(不是你想要做的),inter COM 就足够了

标签: c++ windows hook 32bit-64bit


【解决方案1】:

使用进程外 COM+ 对象来承载 DLL。您可以使用此方法从 32 位调用 64 位代码,这样除了您决定加载 32 位或 64 位 COM+ 对象的 if 语句外,大多数启动器代码都保持不变。可以对该对象进行编码以将适当版本的 DLL 加载到进程中,一个用于 64 位进程,一个用于 32 位。

【讨论】:

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