从字节加载天然DLL []



我正在研究一个项目,该项目涉及从.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 之类的东西中进行编程,因为这些类型的恶作剧会更容易,甚至可以示例。

最新更新