当注入dll时,用户程序如何执行它

时间:2013-10-19 15:51:59

标签: windows winapi dll

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

1 个答案:

答案 0 :(得分:0)

首先,你应该知道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和进程的一些基本知识,并且您将无法理解代码注入。