Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将DLL注入目标进程VB.NET_C#_.net_Vb.net_Dll_Code Injection - Fatal编程技术网

C# 将DLL注入目标进程VB.NET

C# 将DLL注入目标进程VB.NET,c#,.net,vb.net,dll,code-injection,C#,.net,Vb.net,Dll,Code Injection,我最近编写了一个快速的VB.NET应用程序,将DLL注入到正在运行的进程中。为了测试它,我创建了自己的vb.net类库项目,该项目只生成一个“HelloWorld”消息框,希望在我注入HelloWorld.DLL后,它会显示在目标进程中 我的问题是,在我注入HelloWorld.DLL之后,消息框永远不会出现。我很确定这样做的原因是因为一旦我的HelloWorld.DLL被注入(因为它是一个VB.NET DLL),它就没有DllMain,因此不知道执行什么,也不会发生任何事情 我必须在C++中注

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

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

我必须在C++中注射DLL,所以它有DLLMIN吗?有什么我可以做的工作吗?还是我对一切都错了


如有任何见解,将不胜感激。谢谢。

虽然.NET DLL在技术上是PE格式的扩展,但正是这种扩展使其与包含纯编译本机代码的DLL有本质区别。为了运行.NET代码(托管代码),需要由.NET解释器在AppDomain的上下文中执行is

从本质上说,.NET需要做大量的工作来启动和运行代码

微软(保佑他们!)已经写了一篇文章,概述了你们需要在这里做什么


另一个选项是不编写纯C++代码,而是创建一个托管C++项目,这将使两个程序在一起很容易地进行。BTW有管理的C++项目并不意味着所有的代码都必须管理AFIK < /P>。NET DLL甚至不是PE文件,它们只是文件扩展名中的DLL。您把Hello World消息框代码放在DLL中的哪一个地方,并且您可能不应该将.NET程序集注入其他进程中,您所依赖的另一个进程没有托管不同版本的运行时。@Blogbeard:这是不正确的。NET程序集实际上是PE文件的一种扩展形式,请参见@dthorpe-我尝试将其放入Public Sub New()以及一个共享方法中,但都不起作用。由于.NET程序集实际上是PE文件,那么是否应该有某种方法来指定进入我的DLL的入口点?这似乎没有任何作用。问题是我无法控制如何调用我的DLL(也就是说,我无法导入.tlb等)。我调用了LoadLibrary并将我的.dll加载到目标应用程序内存中,但目标进程不知道入口点。嗨,crunchy,我仍然支持我的第一篇文章。你需要更多地了解AppDomain(以及一大堆其他东西,这些东西根本不值得你花时间去探索——IMHO)。值得一看的是,看看这个。