Como usar EntryPoint.Invoke no C#

Estou implementando um algoritmo em C# que deve carregar um executável em um vetor de bytes, e depois executá-lo com a instrução EntryPoint.Invoke, mas todas as tentativas até então deram erro.
IMPORTANTE: Eu sei outras formas de carregar um executável e depois executá-lo, mas eu preciso de um método que carregue diretamente na memória, além disso, depois eu aprimorarei o algoritmo e também vou criar um método para encriptar e decriptar o executável, por isso mesmo preciso que seja feito de um jeito que carregue diretamente na memória, sem passar pelo HD, como um crypter. O código que eu implementei até o momento é esse:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Reflection; //Para poder usar tipo Assembly

namespace ConsoleApp1
{
class Program
{
[STAThread] //Não sei porque usar, mas me foi recomendado
static void Main(string[] args)
{
Console.WriteLine(“Escolha um arquivo: “);
string caminho = Console.ReadLine(); //Lê o nome e diretório do arquivo
caminho = caminho.Replace(””",""); //Apaga as aspas caso tiver

        byte[] arquivo = File.ReadAllBytes(caminho);    //Cria um vetor de bytes e carrega o executável
        Assembly executável = Assembly.Load(arquivo);   //Carrega em um tipo Assembly

        object[] parâmetros = new object[1];    //Para invocar o EntryPoint.Invoke
        executável.EntryPoint.Invoke(executável.EntryPoint,parâmetros);     //Invocando o EntryPoint.Invoke
        
        Console.WriteLine("");
        Console.Read();
    }
}

}

PS: Fiz isso no Console Application, e em segundo lugar, por favor, me deem dicas de como formatar o código da minha pergunta aqui na página, vi que ficou desajeitado, mas é a primeira vez que eu venho a esse site.

Falar a verdade, não faz muito sentido você fazer isso…
Você está indicando um arquivo que já existe na máquina e lendo ele como um array de bytes, ou seja, o executável já está disponível para quem quiser ir lá executa-lo.

Seria diferente se você estivesse tentando carregar o executável de algum array de bytes já existente sem o executável na máquina.

Posso estar enganado mas vejo assim.

Eu concordo com você, não faz muito sentido fazer isso sendo que o executável está na máquina, mas a questão no momento é que eu estou estudando uma forma de usar o EntryPoint, futuramente pretendo usar um arquivo de recurso em vez de um executável da máquina, por isso preciso aprender como executá-lo através da passagem do ponto de entrada (EntryPoint). Se puder me ajudar eu agradeceria muito.

Fiz um exemplo para você: https://github.com/JulioCesarSF/EntryPoint-Invoke