我正在与沙箱技术相关的项目中工作。从C中的缓冲区运行程序集.exe
目前我正在写一个C程序,从远程Web服务器获取一个小程序集.exe
二进制(.NET)
。这个二进制文件存储在内存中(从不接触磁盘),我的意图是从内存中运行这个二进制文件。如果我的客户是在.NET
中制作的,我从内存中运行该程序集没有任何问题(事实上,有很多不同的方法可以获得这个),但当然这不可能与C
(不完全确定)。
我的问题是:在我的C
程序的地址空间中有该程序集.exe
,有没有什么办法可以从那里运行它?有什么办法可以让CLR
运行它吗?起初我想调用powershell从那里运行它(使用Reflection.Assembly),但是这种情况涉及到将程序集写入磁盘。
在任何情况下,毫无疑问,最好的和有效的方式是通过使用.NET
客户端。
这是可能的,我毫不怀疑。简单?不,我相当怀疑这远远超出了单个SO回答的范围。 –
那么,我们知道.net程序集只能由.net运行时(或等效)执行。那么如何使用cli与C中的C#进行交互,然后使用已有的C#方法从内存中运行程序集。这会按照你想要的方式工作吗? – kbzombie
它可以在没有写入磁盘的PS中完成。绝对不容易。以下是[how]的概要(https://www.defcon.org/images/defcon-21/dc-21-presentations/Bialek/DEFCON-21-Bialek-PowerPwning-Post-Exploiting-by-Overpowering-Powershell .pdf)和[很多代码]的链接(https://github.com/clymb3r/powershell) –