我想通过从字节数组中加载 C#控制台应用程序来启动它。 如果我将应用程序写入磁盘并手动启动程序,它将启动,因此这意味着已正确读取了字节。 我尝试了在网上找到的各种片段,例如:
var regex = new RegExp('[\\]]');
或:
var regex = new RegExp('[-,_,\',",;,:,!,@,#,$,%,^,&,*,(,),[,\\],\?,{,},|,+,=,<,>,~,`,\\\\,\,,\/,.]', 'g')
这些代码实际上适用于Winforms应用程序,但不适用于控制台应用程序。
答案 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。