【发布时间】:2011-07-01 14:30:18
【问题描述】:
我最近编写了一个快速的 VB.NET 应用程序,它将 DLL 注入到正在运行的进程中。为了测试它,我正在创建我自己的 vb.net 类库项目,它只是生成一个“Hello World”消息框,希望它在我注入 HelloWorld.DLL 后出现在目标进程中。
我的问题是,在我注入 HelloWorld.DLL 后,消息框永远不会出现。我很确定这是因为一旦我的 HelloWorld.DLL 被注入(因为它是一个 VB.NET DLL),它就没有 DllMain,因此不知道要执行什么并且什么也没有发生。
我是否必须在 C++ 中制作我的注入 DLL,以便它有一个 DllMain?有什么我可以做的吗?还是我对所有事情都完全错了。
任何见解将不胜感激。谢谢。
【问题讨论】:
-
.net dll 甚至不是 PE 文件,它们只是文件扩展名中的 dll。
-
你把你的 Hello World 消息框代码放在 dll 的什么地方?
-
而且您可能也不应该将 .NET 程序集注入到其他进程中,因为您依赖的其他进程没有托管不同版本的运行时。
-
@Blogbeard:这是不正确的。 .NET 程序集实际上是 PE 文件的扩展形式,请参阅 en.wikipedia.org/wiki/…
-
@dthorpe - 我尝试将其放入 Public Sub New() 以及共享方法中,但均无效。由于 .NET 程序集实际上是 PE 文件,那么不应该有某种方法来指定我的 DLL 的入口点吗?
标签: c# .net vb.net dll code-injection