从字节加载天然DLL []
loading native dll from byte[]
我正在研究一个项目,该项目涉及从.NET程序中的网页接收字节[],然后将该字节[]加载为DLL。但是,DLL不是.NET组件,而是本机组件。我不能使用LoadLibrary,因为我必须写入磁盘,并且我想将本机DLL保留在内存中。我不能使用C /CLI,因为这一切都是在单声道中完成的,而单声道不支持C /CLI。是否有一个库或项目可以让我从字节[],在C#中加载本机dll?我已经看过本教程:https://www.joachim-bauch.de/tutorials/loading-a-dll-from-memory/,但这是C 。
这将帮助您或带领您在某个地方。
这基本上是您发送的项目的包装器,我将为任何希望查看它的人保留存储库。未经测试的32位操作系统,因此它可能会造成开销。
https://github.com/dretax/dynamicdllloader
它基本上可以做您想要的。期望本机DLL的字节数组,并将其加载到当前过程中。
只需使用assembly.load(如果是.NET汇编)https://msdn.microsoft.com/en-us/library/h538bck7(v=v=vs.110)..aspx。
否则,请与未托管的DLL一起使用PinVoke。
我会给你一个简短的谎言,以解决该问题的问题:
- 您正在从Internet接收DLL。每个律师都会想知道他是否只是疯了,还是真正站在"它的工作方式"中。上个世纪,我们在数据阵列上的远程代码切除和代码注入时遇到了足够的问题,以了解这将如何失败而无需尝试。
- 托管.NET运行时的设计中的任何内容都存在,因此您不能这样做。您建议您必须转到未知的代码。那时,您不妨用本机C 写。
- 甚至可能只是为了拔起它而逃脱一些磨坊病毒扫描仪的启发式。因为那是我操作系统访问者的简短列表中,永远不要尝试拉动。
您真的,真正的应该埋葬这个想法并没有它。如果您有一个想要这个的老板,请说他在不可能和象征性的疯狂之间。甚至可能确实疯了。即使您可以做到这一点,也不会安装良好的管理。
如果没有限制您:最好将其移动到某种类型的辅助过程中,然后通过Intercoss Communication传输数据/结果。当从.NET应用程序中调用Old,Uman的,从未移民到64位的DLL时,错过的二进制性通常是一个问题。辅助过程(总是在X32处运行以匹配DLL)可以帮助您解决这个问题。一旦您获得了辅助过程,它就可以在像本机C 之类的东西中进行编程,因为这些类型的恶作剧会更容易,甚至可以示例。
- 从不同线程使用int64的不同字节安全吗
- 挂起和取消挂起一个文件DLL
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 导入库可以跨dll版本工作吗
- 在UNIX系统中使用DIR查找文件的字节大小
- 从C++dll访问C#中的一行主要参数
- 将字节数组从 DLL 返回到 C#C++
- C++ DLL 包装器 vb.net 传递字节数组的字节数组?
- 将字节数组从c 不受管理的dll传递到c#unity
- 将字节数组从 C# DLL 返回到C++应用程序
- 将字节数组作为char*从C#传递到C++DLL
- 从字节加载天然DLL []
- 将可变长度字节数组从 C# 传递到非托管C++ dll
- 客户端正在获取从C++COM dll返回的字节数组
- 正在尝试从C++Dll访问C#中的字节数组
- VisualC++DLL将2-3兆字节复制到C#缓冲区的最快方法是什么
- 从c#传递字节引用到非托管cppcom dll
- 从c#中的非托管c++ DLL中获取字节数组上的指针
- 不需要的断点在 ntdll.dll!_LdrpSnapThunk@36() + 0xf5 字节中