如果你想通过用户进程在dll中执行整个代码,你会怎么做?在createremotethread用于从kernel32.dll执行loadlibraryA之后,当它在用户空间加载dll时,exe如何执行其中的所有代码?
答案 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和进程的一些基本知识,并且您将无法理解代码注入。