【问题标题】:Injecting 32bit dll into 64bit process - Autoit makes it possible?将 32 位 dll 注入 64 位进程 - Autoit 使其成为可能?
【发布时间】:2013-10-26 08:01:03
【问题描述】:

afaik 没有办法将 32 位 dll 注入 64 位进程,反之亦然(至少用我的 c++ 编写的注入器/dll 是不可能的)。但是,当使用来自http://pastebin.com/AGWw2kT8 的 Autoit 注入器时,可以将 32 位 dll 注入到 64 位进程中。这个 Autoit 库使用与我的 c++ 注入器 (CreateRemoteThread) 相同的注入方式。有人可以解释这种行为吗?

【问题讨论】:

  • 我很确定这行不通。
  • 这是亚瑟 C 克拉克效应。无法将 32 位 DLL 注入 64 位进程。该脚本中缺少错误检查当然可以使它看起来有效。

标签: c++ dll code-injection autoit


【解决方案1】:

我找到了注入成功的原因。在 Autoit 注入测试脚本中,我使用 @SystemDir & "\calc.exe" 作为目标应用程序的路径。但是,在 64 位 Windows 安装上,@SystemDir 宏指向 C:\Windows\SysWOW64 而不是 C:\Windows\System32 - 因此脚本启动了 calc.exe 的 32 位版本,其中注入成功。

【讨论】:

    【解决方案2】:

    CreateRemoteThread 32->64 不起作用!

    CreateRemoteThread 64->32 会起作用的!

    关于该主题的更多信息here

    【讨论】:

      【解决方案3】:

      它不可能工作(您不能在一个进程中混合使用 32 位和 64 位代码)。因此它没有。当然,它可能无法清楚地表明它没有工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-12
        • 1970-01-01
        • 2013-09-26
        • 1970-01-01
        • 2021-01-22
        • 2012-02-05
        • 2012-02-05
        相关资源
        最近更新 更多