将DLL注入目标进程VB.NET

时间:2011-02-21 22:07:40

标签: c# .net vb.net dll code-injection

我最近编写了一个快速的VB.NET应用程序,它将DLL注入正在运行的进程中。为了测试它,我创建了自己的vb.net类库项目,它只是生成一个“Hello World”消息框,希望在我注入HelloWorld.DLL后它出现在目标进程中。

我的问题是,在注入HelloWorld.DLL之后,消息框永远不会出现。我很确定这是因为一旦我的HelloWorld.DLL被注入(因为它是一个VB.NET DLL),它没有DllMain,因此不知道要执行什么,没有任何反应。

我是否必须在C ++中制作我的注入DLL,因此它有一个DllMain?作为一种解决方法,我能做些什么吗?或者我对一切都完全错了。

非常感谢任何见解。感谢。

1 个答案:

答案 0 :(得分:3)

虽然.NET DLL在技术上是PE格式的扩展,但它的扩展使其与包含纯编译的本机代码的DLL本质上不同。为了运行.NET代码(托管代码),需要由.NET解释器执行并使用AppDomain的上下文。

基本上,.NET会做很多事情来启动和运行代码。

微软(祝福他们!)撰写文章并概述了你需要做什么http://support.microsoft.com/kb/828736

另一个选择是不编写纯C ++代码,而是创建一个托管C ++项目,这样可以更容易地让两者完美地结合在一起。拥有托管C ++项目的BTW并不意味着所有代码都必须由AFAIK管理