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