【问题标题】:when injecting dll how does the user program execute it [duplicate]注入dll时,用户程序如何执行它[重复]
【发布时间】:2013-10-19 15:51:58
【问题描述】:

如果你想通过用户进程在 dll 中执行整个代码,你会怎么做?使用createremotethread从kernel32.dll执行loadlibraryA后,当它在用户空间加载dll时,exe如何执行其中的所有代码?

【问题讨论】:

  • 此类基本问题请使用 google。查询“createremotethread dll injection”,你会发现很多很好的例子来展示这项技术。请停止重复问同一个问题。

标签: windows winapi dll


【解决方案1】:

首先您应该知道 LoadLibrary() 只会将 DLL 的代码加载到调用 LoadLibrary() 的进程的虚拟内存空间中。

这意味着:LoadLibrary() 是某种 malloc(),它分配一些内存,然后将 DLL 的内容加载到内存中。此时DLL的代码还没有被执行。

通常一个 DLL 包含很多函数。这些函数均未执行。

然而,DLL 有一个“初始化代码”。此代码由 LoadLibrary() 执行。这个“初始化代码”是那些想要将代码注入其他进程的人使用的代码。

以下文章介绍了将代码注入其他进程的三种技术:

http://www.codeproject.com/Articles/4610/Three-Ways-to-Inject-Your-Code-into-Another-Proces

如果您不理解那篇文章(这就是我理解 Hans Passant 评论的方式),那么您缺少一些有关 DLL 和进程的基本知识,您将无法理解代码注入。

【讨论】:

    猜你喜欢
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    相关资源
    最近更新 更多