从字节数组启动C#控制台应用程序

时间:2018-12-27 18:32:38

标签: c#

我想通过从字节数组中加载 C#控制台应用程序来启动它。 如果我将应用程序写入磁盘并手动启动程序,它将启动,因此这意味着已正确读取了字节。 我尝试了在网上找到的各种片段,例如:

var regex = new RegExp('[\\]]');

或:

var regex = new RegExp('[-,_,\',",;,:,!,@,#,$,%,^,&,*,(,),[,\\],\?,{,},|,+,=,<,>,~,`,\\\\,\,,\/,.]', 'g')

这些代码实际上适用于Winforms应用程序,但不适用于控制台应用程序。

1 个答案:

答案 0 :(得分:1)

您获取程序的字节,然后可以使用Assembly.Load从这些字节中加载程序集,并找到EntryPoint并调用它。

private static void RunBytes(byte[] bytes)
{    
Assembly exeAssembly = Assembly.Load(bytes);
var entryPoint = exeAssembly.EntryPoint;
var parms = exeAssembly?.CreateInstance(entryPoint.Name);
 entryPoint?.Invoke(parms, null);
}

您可以先将字节写入磁盘,然后尝试使用Assembly.LoadFrom。